As I was implementing the "loosely-coupled" approach to messaging using Prism's EventAggregator, I came across an interesting scenario: a class which had no public interface; all of it's input and output was done via these behind-the-scenes pub/sub events. If I was to reuse this class in another project, I would look at the public interface to see what functionality it offers and what its dependencies are. But in this case there is nothing (except an event aggregator service). I would have to look inside the class to see what events it is subscribing to, and what events it publishes in order to know how it fits into its surroundings... otherwise it just sits there and does nothing.
Is this a drawback to the pub/sub pattern--lack of discover-ability?
Interfaces hide implementation details and that's why we use them, but at the same time they create coupling between components.
Pub/Sub pattern tries to eliminate coupling, so there is no way you can use any form of interface. Yes, it's a drawback.
Also, in your case if you want to reuse logic for Pub/Sub and other consumers using interfaces you can extract common methods to interface and then call those methods from you private Pub/Sub listeners.