I wouldn't equate the two with one another. The concepts are fundamentally different. The event bus is a messaging system and shared data - whether across threads or across the cluster - is essentially an in memory database. One is event driven and one is not (though it could be).
Coincidentally, both the event bus codecs and ClusterSerializable use a similar interface, serializing objects to/from Buffer, but the MessageCodec does require some additional methods that really are specific to the event bus. You should go check out those respective interfaces. Also, messages serialized by custom codecs can be associated with the appropriate codec for deserialization when they're sent across the wire. Of course, the same thing could be accomplished with fully qualified class names, but it's less efficient than a 1 byte identifier. I suspect the message codecs are more performant than ClusterSerializable objects, which they should be.
I'm sure one of the guys that worked on the event bus and cluster APIs can speak more to the reasoning behind separating the two. It obviously would be simpler to merge the two concepts of possible, so maybe there's some room for refactoring. Perhaps ClusterSerializable or Serializable objects could be sent on the event bus while still allowing codecs for event bus specific handling of serialization/deserialization. But I tend to get a little uncomfortable when too many types serve the same purpose.
BTW I believe cluster-wide shared data for many (all?) of the other data structures you mentioned is on the TODO list.