How to do weight paint on one side, even with mirror modifier
The vertex weights checkbox on the mirror modifier will make it mirror weights to 'mirror' groups if they exist. E.g. weights in Group.L will be mirrored to Group.R if Group.R exists, otherwise those mirrored weights will be assigned to Group.L

It always surprises me how few people seem aware of this behaviour.