I cannot speak to all of the pros/cons of using zmq, as it was decided upon before I started work on it.
So far, I'd say that if you use it well it gets out of your way, but does all the networking things that are simply tedious and error-prone. I'm sure there are other solutions that are adequate for this, but zmq seems to be pretty good and is available on a lot of platforms/languages.
I don't know that it will be more efficient for bandwidth, that's difficult to say. I think long-term it will be far more efficient for developer time when someone comes along and wants to write a service that uses the RPC, and to me that's very important to get right.
Backwards compatibility will be around for a while, of course. I'm debating whether that should be "simply keep the old RPC around for now" or "write a translation layer that translates the old calls to the new for less error-prone maintenance until the old is deprecated completely". Regardless of what it looks like internally, the old RPC should stick around for a while (and appear unchanged from the outside).