Have one main Groups.io profile, including the privacy option, that applies to all groups and subgroups. If someone wants to be public in all groups, or private in all groups, that can easily be set. You don't need a "viewable by group members and parent group members" option.
For each group and subgroup, default to the main profile, but allow an override for that group/subgroup only. Every field, including the privacy field, can be overridden. Subgroup profiles default to the group profile, unless they are overridden. (Imagine inheritance in object-oriented programming, except without the ability to add more profile fields.)
Example: Say I have a normal firstname/lastname professional profile I use for a variety of groups, and I'd like it to be public. However, one group I'm in is only for my college buddies, and I want to override my profile in that group to use my old nickname instead, and a possibly more embarrassing photo (but I don't want my public professional people to see that!). My college group is also running a roleplaying adventure in a subgroup, and in that subgroup, I want my name to be my character's name, and I want my character's photo.
This implementation would also work for setting things up for anonymous groups, except the moderator would probably want an option to force a separate profile to be made, so that it does not default to the main profile. That would prevent someone from accidentally posting something sketchy with their real name from another group attached.
Does this sound simpler?