The main problem is that, to get correct depth, you have to modify Z in the pixel shader, which kills early Z testing. For thousands of bouncing spheres, that doesn't matter so much. For your typical sewer-crawling FPS game, however, that matters.
Jon Watte, Direct3D MVP
kW X-port 3ds Max .X exporter
kW Animation source code