I just happen to work with TensorFlow, PyTorch and Horovod at this moment. These are written in C++ but meant for consumption in Python. That is, the Python bindings are part of the interface around which these projects are designed, from the inception. And it makes sense, given that users of these libraries are data scientists who are unlikely to know C++ but are likely to want to use many other Python libraries in the same project.
It just sometimes makes sense to use, and write in something else than C++ - even if it happens to be ones most preferred language. It is actually perfectly normal that the language is bound to domain, and not all domains have affinity to C++ (or C).
Having said that, I do agree that a VM for a language (JVM CLR and beam) is a very annoying waste of CPU cycles. Sadly we are not going to get rid of them in the foreseeable future, so might as well learn.