We use it to transfer realtime data from one system to another. Mostly as a way to break reliance on linked servers where possible.
We pull data from system X into system Y. Application A uses system X and Application B uses system Y. Application A relies heavily on the tables not being locked and blocking needs to be minimized as much as possible to prevent slowdown on the system. Application B needs to validate data from system X with the data being as near to real time as possible so SSIS isn't an option. It works well for us for the most part.
Database mirroring also uses service broker in the back end to do its magic.
You can also do a 1 to many with service broker by sending multiple messages on table change. If you have a busy server with high CPU, high memory and high disk I/O, you may want to offload some of the auditing data to a less busy server. Or really, any cross database/instance/server communication you want to do.