sh.enableBalancing (and disableBalancing) take collection name as an argument. If nothing is passed in, it does not error (probably should!) and then tries to update nobalance flag for collection named "" which of course doesn't exist.
Since it's easy for a user to assume this command enables/disables global cluster balancing, the no op and no warning or error is somewhat dangerous and misleading.