I've got it working, I had to allow the update as you mentioned
```
Meteor.users.allow({
  update: function (userId) {
    return Meteor.userId() === userId;
  }
});
```
In regards to it being optional, in my case it should be, but in yours when you are creating the user it needs to be set. What about adding it as optional, and also having a default value? I think that would take care of both use cases wouldn't it?
``` 
defaultValue: false,
optional: true
```