Well, yes, you can extend the classes or prototype objects if you wish. I've actually done that a bit with my implementation. The major problem you have with including roster logic in juggernaut is once you start clustering the juggernaut server across n machines. Each juggernaut server is responsible for itself and doesn't know, or need to know about the other n instances running.
The way I'm doing this now, in pseudocode...
Juggernaut running N instances with some extending and included methods (for prototype extension)
Separate process listens to same channel in redis (pub/sub)
Parse out the subscribe/unsubscribe messages and do something, in this case manage a user roster
Include more information than just a user_id in the subscribe and unsubscribe events, such as the socket uid so you can differentiate between socket connections, and not just a given user
Store info somewhere
Now I can see for debugging purposes, it might be necessary to ping a jug server for it's current Client hash. That can be extended fairly easily, but you really don't want to make that the norm.
Make sense?