TLS (non-anonymous) Handshake requires the Server to sign the ServerKeyExchange message so that the Client can authenticate the Server using the public key present in the Server Certificate.
However, TLS Handshake with Client Authentication requires the Client to hash all previous handshake messages, digitally sign it & send this signature in the CertificateVerify message. The Server then verifies this signature using the public key present in the Client Certificate.
It is understandable that ClientKeyExchange & CertificateVerify are 2 separate messages because Client Authentication is optional. But, is there any specific reason for having the Client sign over all previous messages instead of just signing the ClientKeyExchange (like the Server does) and sending the signature in CertificateVerify?