I'd like to use a less detailed mesh to approximate the shadow cast by a highly detailed mesh.
For example a character in the game would use a detailed mesh to render the character and a less detailed mesh to render the character's shadow. This approach would presumably speed up the shadow rendering pass.
What I do in such a case is to add a low detail object as shadow proxy to my scenes and assign an alpha cutout shader to it and pull the cutoff value up to full. This makes the shadow proxy object invisible to the camera but is still casting a shadow.
Of course, you have to switch off 'receive shadow' on the proxy and 'cast shadow' on your high poly object to make this work the way it should.
I think there would need to be something like a Camera.OnRenderShadow function for that to work, but unfortunately there isn't. However, the shadows are already rendered without lighting or anything, so it's just polygons, which isn't much of a speedup except on very low-end cards.