In theory, I think you pretty much explained it yourself in your Routers/Notifiers part. The difference is kind of fuzzy for JMSRouter/NotifyQueue/NotifyTopic, so I think I'd err on the side of JMSRouter, which I think provides more attributes and options.
I dont think I understand this statement Aman
>> Routers: How your services can move messages between services (it cannot send message to esb aware listener)
from Programmers guide
Routers are used to direct either the message or its payload to an end-point. Some routers support the unwrap property. Set this property to true, to automatically extract message payload and send it to the next ESB-unaware end-point by itself. Setting the option to false will pass the ESB Message in its entirety, without extracting the payload. (In this latter case, the receiving end-point must be ESBaware so that it can handle the message.)
JMSRouter supports "unwrap" property.
I believe JMSRouter would be exception to above statement compared to other routers.
well as per my understanding, static router, CBR, MessageFilter also can send messages to ESB aware listeners.