It's because C++ is very fast and has deterministic memory management with regard to performance, which is important to ensure hitting e.g. 60 fps (or other) targets.
A language with a realtime gc and very high speed would work as well but there is none suitable at this point.
Urho3D is the best engine this side of UE4. UE4 is good but the editor is a broken mess and explodes every 5 seconds, which makes using it a pain in the ass beyond any pain in the ass.
For 2D, rolling your own literally takes less time and effort to learning one so it's best to always do that. For 3D, rolling your own takes man-years to get anything even remotely production-ready so you're better off with one of these engines.
Note that it's not usual to write a desktop game in C++ too, however, just the engine and speed-critical algorithms. The rest is typically written in a scripting language (such as lua, C#, UE4's strange scripting shit, angelscript, etc.)