Unfortunately the 'user', 'group', and 'service' providers are considerably more complicated than they need to be, and in fact we have a Google Summer of Code project to try to fix some of that.
In many cases, and I think in this case particularly, those methods are added by a parent class, rather than being entry points for the type. The entry points from the type are almost always limited to these:
getters and setters (e.g., uid and uid=)
ensure triggers (e.g., create, destroy)
Everything else is unlikely to be used by the type, but there are things like 'commands' and 'features' that are used by the provider management system.