GL is easy to use and fun to experiment with. You can make sample GL programs with a single page of code. I think D3D has managed to make the worst possible interface choice at every oportunity. Expandable structs passed to functions. Many things that are a single line of GL code require half a page of D3D code to allocate a structure, set a size, fill something in, call a COM routine, then extract the result.
Ease of use is damn important.
If you can program something in half the time, you can ship earlier or explore more aproaches. On the surface, this apears to be an efficiency improvement for D3D, because it gets rid of a lot of procedure call overhead. You wouldn't actually make an execute buffer with a single triangle in it, or your performance would be dreadfull. The idea is to build up a large batch of commands so that you pass lots of work to D3D with a single procedure call. You can cover some of the messy work with macros, but that brings its own set of problems.