When checkConnectionForFault is set to "false" as stated in documentation we should rely on the message only for determining if a response envelope is a Fault.
This actually works only if HTTP response code is 500 or 200, but as for a service I call the server send an HTTP 400 response code with a response containing a Fault (it's clearly not a WS-I Basic Profile compliant web service) the handleError is called instead of handleFault and I get a WebServiceTransportException instead of the Fault related exception.
This breaks WS-I Basic Profile conformance of Spring Web Services as it states:
"... the Profile requires that they examine the envelope. A Fault is an envelope that has a single child element of the soap:Body element, that element being a soap:Fault element.
R1107 A RECEIVER MUST interpret a SOAP message as a Fault when the soap:Body of the message has a single soap:Fault child."