Quick and dirty answer: it mainly because of API's like DX12 and Vulkan, these are great for performance reasons over older API's like DX11, but the low-level access granted by DX12 makes things so devs have more freedom to get the best performance out of what they're making, but also it's way more complex for devs now that there are less safe guards. I'll explain: the core problem of modern video games has mostly to do with memory management and Multicore CPU's and how to utilize them in runtime code. DX9 up to 11 had problems utilizing more than 4 threads, because game-logic running on more threads is incredibly difficult because of deterministic dependencies. That's why every game uses one main thread and separate jobs over multiple threads and brings them back to the main thread to sync them up, but separating these is tricky and per game different. And separating them badly causes stalling which slows down performance.
That's where Vulkan and DX12 come in and give the opportunity for devs to have more low-level access to the API layers and customize it proper for their game. But this created issues for devs that aren't well equipped for this low-level access. So that's why DX12 is a blessing and a curse. DX12 (and Vulkan) can be leagues more powerful than DX11 in the right hands