The main mechanisms used for composition are lazy streams (via generators), events (via prototype-like composition), and higher level structures (via classes).
Of course the client has been replaced by Clojure in Overtone, and I'm pretty sure I've seen JavaScript clients in the wild as well...
It's worth pointing out that the underlying synthesis and routing engine is extremely versatile, with signal graphs compiled from a user-authored OO AST.
I'm looking forward to returning to Supercollider next year as I'm hoping to return to study sound design and composition. My stuff is currently at soundcloud.com/slex...