Many differnces for professionals (a.k.a. programmers):
* Client software runs sometimes badly for servers without user interface

You need tobe logged in (to run it), or it may get stuck with a dialog that noone can click. I remember reading about friendly IB (or was it someone else?) sometimes bringing up a "you need to update your client" dialog (!) waiting for someone to press "ok" and NOT ACCEPTING ANY ORDERS THROUGH THE API UNTIL THAT HAPPENED, without error, just getting stuck. This is pretty much as bad behavior as it gets.
* It is per definition FAT and requiers updates often. THis is because it is a lot more than the API, which often is an afterthought. A C++ linked in API (like I use riht now with Rithmic) is more stable as it ONLY handles the communication aprt, and with HTML there is only little chance left for an update required due to a coding error in the third party code.
* It is often a pain to manage. I write my own servers to trade at the moment. I use different ocnnectivity (RIthmic at the moment, only, but the system is expensible). While this is a Library that i Have to link in, I can distribute it and update it automatically with my package installer (because, incidentally, my trading system will run distributed to about 4-6 computers in the beginning). Client software often is hard to integrate into proper system management.
And, if you take out market data feeds, which obviously suck as SOAP per definition.... a SOAP / Web service based API is really good enough for things like order handling or account handling, even if that means pulling X times per second to get a notification whether something got filled. Not super efficient, but good enough. The main problem a SOAP approach has :
* Soap is not efficient. This sucks to transfer a lot of SMALL particles - emphasis on both, small and size, like market updates.
* Soap is uni-directional in the standard - there are some ways to achieve bi directional, but they are propietary (WCF from Microsoft allows publishing events, which then get polled from the client behind the bars, and I think I Read about a TCP chanel they use - no html - that allows real time event forwarding), which leaves on in a problem getting things like status updates (order filled etc.).