From my experience, it stopped developers from making changes that weren’t backward compatible so for example, if some fields in the providing service needed to be renamed, they were forced to first add new fields but leave existing fields in place to maintain support. Once the consumer has been updated to look for just the new fields then they can be removed from the providing service. The benefit of the contract tests being it’s easy to identify if needed changes are going to break existing relationships.