When validating my shapes with a shacl Validator, I get a validation report which includes the value I input for sh:message. However, the default message sometimes contains useful information that my custom sh:message cannot capture. Is there a way to show both the custom message (my value of sh:message) and the default message (the one I would get if I did not put a value for sh:message)?
This depends on the implementation. The SHACL spec would allow different engines to produce extra triples, such as a my:defaultMessage as part of the validation report. I can only speak of the TopBraid engine, where we don't do this.
Having said this, the validation results point at the constraint component, and that information may give you some insights into what kind of violation has happened and what the usual message would be for them.
But the short answer is no.