Binary is more efficient for serializable objects. There is less transformation required at endpoints before and after transferring data around. Less code and libraries are required to develop and deploy the distributed components of an application. Maintenance of the code is typically easier. And more sophistication can be applied in the passing of serializable object as method parameters, return values and exception handling information. Java RMI for example with its use of stub/skeletons provides the mechanism to invoke functions on remote objects which is truly more powerful than making http requests with XML data.
I suppose it’s likely that XML is just easier to use for now. The tools and IDE plugins were easier to develop and came faster than any tools to support building applications with remoting capabilities. Http and XML are just easier to deal with than configuring EJBs. Although EJB3 components are now much easier to deal with since the wiring is largely defined using annotations.
From the perspective of distributed computing being web servers scattered everywhere, it’s likely XML and RESTful style web services will continue to dominate. True next generation distributed computing capabilities where all computers are peers will require greater sophistication to handle mobile code, mobile services, service discovery and the transfer of data between the services. It’s not going to be HTTP and XML!