The main intention was encapsulation than inheritance. and the reasoning I had was:
1) Move all the message bus related operations to a common class (the AbstractPlugin is kind of more generic and not all the plugins need to know about the message bus).
2) Excluding if/else conditions to check the plugin type (stream/job), there are still common methods "bindInputChannel" , "bindOutputChannel", "tapOutputChannel" and some helper methods; I don't feel like having these methods in AbstractPlugin as not all the plugins need to know about these methods.
3) Also, In future if we may have multiple plugins of same type and some logic (like Prioritized one would operate on) to choose the; and I thought it would help here as well.