Yeah, the registration actually needs to work both internally to SBT *and* in clients, like the IDE.  I'm thinking companion based is ok for internally to sbt.  You can register when your class is loaded and then you're guaranteed to be able to serialize any class you've loaded (used).

The other side is where that's painful.  You wouldn't load the class normally unless you needed to deserialize it....