REST ist eine Architektur, SOAP ist ein Protokoll.
Das ist das erste Problem.
Sie können SOAP-Umschläge in einer REST-Anwendung senden.
SOAP selbst ist eigentlich ziemlich einfach und grundlegend, erst die darauf aufbauenden WSS-*-Standards machen es sehr komplex.
Wenn Ihre Kunden andere Anwendungen und andere Server sind, gibt es heute viel Unterstützung für das SOAP-Protokoll, und die Grundlagen der Datenübertragung sind in modernen IDEs im Wesentlichen ein Mausklick.
Wenn Ihre Kunden eher RIAs oder Ajax-Clients sind, werden Sie wahrscheinlich etwas Einfacheres als SOAP und etwas Natives für den Client (vor allem JSON) wollen.
JSON-Pakete, die über HTTP gesendet werden, sind nicht unbedingt eine REST-Architektur, sondern nur Nachrichten an URLs. Das alles ist durchaus praktikabel, aber es gibt Schlüsselkomponenten der REST-Idiomatik. Es ist jedoch leicht, die beiden zu verwechseln. Aber nur weil Sie HTTP-Anfragen stellen, bedeutet das nicht unbedingt, dass Sie eine REST-Architektur haben. Sie können eine REST-Anwendung ganz ohne HTTP haben (wohlgemerkt, das ist selten).
Wenn Sie also über Server und Verbraucher verfügen, die mit SOAP "vertraut" sind, können SOAP und der WSS-Stack gute Dienste leisten. Wenn Sie mehr Ad-hoc-Sachen machen und eine bessere Schnittstelle zu Webbrowsern haben wollen, dann kann ein leichteres Protokoll über HTTP auch gut funktionieren.