In order to make various tools work together, we want to standardize the interfaces between the tools. In this way, one can literally shop around and pick the best tools suitable for the job, without worrying if they will work together.
An important side effect is that the tool-makers can focus on their specific goal and let the functionality on the other side of the interface be covered by other tools. Because these tools are then more focussed on their task, they have a better quality.
For example a Test Execution tool only has to store the test results in the right format and let a Test Reporting tool worry about how the results are presented. The creators of the Test Execution Tool do not have to worry about the best way to present the results and can spend more energy on the Test Execution itself.