Ok I didn't know that, but it seems like a very sensible approach. I suppose you would lose some specificity in terms of very specific features, but probably this would be sufficient in most cases.
But couldn't you do something very similar in Vulkan? I.e. essentially bucket your render-paths into a couple tiers by checking for a set of extensions required to support each one?
In D3D11, the "tier" is basically the minor version number (D3D11.1, .2, etc...), while in Metal you have this handy reference:
https://developer.apple.com/metal/Metal-Feature-Set-Tables.p...
Both solutions prevent the "combinatorial explosion" of OpenGL or Vulkan extensions.