Web Services is about integration, so the most important part here is, what do the standards specify (http://www.w3.org/TR/2007/REC-soap12-part2-20070427/#http-reqbindwaitstate)? What do client applications expect?
As far as i'm aware a SOAP fault is also used to report application level errors? In this case, a 500 HTTP code doesn't seem the appropriate response. For example, if the web service tries to add a new customer, but that customer already exists, the webservice would respond with a SOAP fault indicating that the customer cannot be inserted. This is a normal situation that should not result in a 500 error.
Seems the advise in the second part above is not recommended: The webservices specs aren't explicit enough about this issue, so the best thing is to comply to WS-I basic profile, which gives recommendations for the use of webservices. The 500 status is a difficult issue, the WS-I Basic profile has been changed on this subject between version 1.1 and version 2.0.
Version 1.1: R1126 An INSTANCE MUST return a "500 Internal Server Error" HTTP status code if the response envelope is a Fault.
Version 2.0 removed the explicit recommendation about status code 500, but it does state: R1111 An INSTANCE SHOULD use a "200 OK" HTTP status code on a response message that contains an envelope that is not a fault.
So concluding: status code 500 when returning a fault is conform WS-I basic profile.
See: