You can actually do the same with OGL, just not as 'easily' as D3D. You can actually query the video card for specific features and disable them in your render engine if you don't want software picking up the slack, or just kick the user back out into the shell.
This isn't always a great option to kick users out to the shell, as by doing this, you limit your sales. Even D3D games usually have multiple rendering paths to account for a particular video card vendor's quirks if they are heavily optimizing. They just shield you from them as a programmer (much as a OGL game would). But in general, D3D games use multiple code paths less often than an OGL game.