One reason for requiring both is when the API is being used on infrastructure which separates the client certification verification and the payload verification. In some environments, the checking of client certificates is performed at an edge level, while the payload verification is carried out at the application level, after passing through some layers of load balancing or proxy systems.
This in turn can allow for a subtle form of attack, where the client certificate is valid for connection to the system, but the inner payload actually corresponds to another client - the edge system allows access, since the client certificate is valid, and the application system allows the action to be performed, since it has no way of verifying which user made the request, but trusts the edge layer to only allow valid requests through.
If the payload is signed, however, the application can now verify that the requested action is appropriate for the connecting client, even if it does not have access to the client certificate check.