Take subscriptions as an example.
If somebody subscribes, they are moved to a different group. This group has got exactly the same permissions as the normal users group, except for a couple of extra permissions to use the spell checker and hotlist_flex box.
Now what happens if a subsribed user mod-bombs somebody? They're ratings are undone, and they're moved to an "un-rateable" group.
Except, whoops. They've just lost all their subscription perks.
So, you have to create another group, call it "subscribed un-rateable" and manually move them there.
Now, I've got an idea for a scoop site where there would be many editors. Each editor would be responsible for a specific section. They can post stories straight to that section. Now what do I do? I have to create a group for each section. If I have subscribed users then I have to create 2 groups for each section.
I've got an idea for a more flexible approach.
Each user can belong to more than 1 group. Many groups in fact.
This makes the section permissions easier. You want somebody to be able to post stories straight to your "LUG" section, but also to your "BSD" section?
Just add them to the LUG-Editors group, and the BSD-Editors group.
How do you deal with taking permissions away?
Well, there are two ways to do this. You could create groups for permissions that you might want to remove from people. However, when it gets down to that, you might as well be assigning permissions on an individual basis.
Or, you could create another state for permissions.
At the moment we've got "On" and "Off". With another state of "Always-Off" you could make sure that somebody never has the Comment-rate permission for example, even if another group says they can have it.