Recently, Artur Hefczyc from Tigase project implemented a StanzaReceiver module, which is, simplified, a general pubsub-like interface, but uses a general <message/> stanza with body instead of pubsub stanzas.
This gave an idea of having a general event receiver component of clients: if a pubsub / pep node can't be handled by one of those special protocols (like: User Avatar, User Tune, etc.), then just pop up in a window somehow.
(Mockup created with OmniGraffle, using CC photo from flickr user Bhalash, just to give the credits.)
Client compatibility is always a bottleneck. If we do PEP a general protocol over User Tune, User Mood etc, we don't have one new protocol to implement: we have a new one for every capability. Isn't it easier, to, let's say, have a "<human-readeable/>" field for every possible solution, and if a client can't handle such event, well, it simply falls back to a default method?
Basically, we still have 3 types of messages: a direct one, a broadcast one, and a get-set pair of them. We know that we just want to 'broadcast' something, in hope that this will be understood by most of our peers - but what happens if not? I think end users would benefit from such.
I don't want to force anybody to anything, just trying to get the flexibility of pubsub and the obvious reasons why StanzaReceiver was created get together :)