I've been using the new Web Services Factory and am looking into the arguments behind Exception Shielding the internal workings of the Web Service when firing SoapExceptions. Found some great articles from Eric that explain how you can shield but also extract more detail on the errors that happened in the web service.
I guess if you are simply writing a SOA solution, having access to further detail seems useful. In an environment where you are consuming or creating a web service thet will be consumed, shielding is a key element of the design. But even so, being able to pass back useful messages is important. Eric's third article shows how this can be done.
In the past I have used 'Wrappers' to pass messages up through layers rather than Exceptions as such. Then at each consuming higher layer, it checks the messages in the 'Wrappers' as it receives them. The 'Wrappers' also contain the results that obviously were expected by calling the method.
Found a great blog article by Keith Brown from PluralInsight with some really good comment feedback on the best approaches. Ryan Rinaldi's blog rant also has a very good comment reply with a solution.