The advantage of compensation is that system updates don't have to be performed synchronously (some backends might even be offline while they are being updated). The drawback is that you have to explicitly provide and call services that revert previous services or programs for manual error handling.
 
BPEL, the process execution language of Web Services, directly supports compensation (see BPEL).