Почему ни один из этих движков не написан на Java или Python?
Java и тем более Python дают ооочень большой оверхед, да безусловно можно написать на них движок, но он будет не такой производительный. Также в отличии от большинства языков(включая Java и Python) C++ позволяет выжимать максимум производительности, в джаве сборщик мусора, там нельзя размещать объекты на стеке, там размер переменной привязан к виртуальной среде, а не к машине, на которой исполняется программа, куча проверок вроде выхода за границы массива, которые дают оверхед и в конце концов, джава использует виртуальную машину. AFAIR, в джаве даже нет аналога вектора, где элементы(а не ссылки на них) будут храниться последовательно в памяти и также нельзя включить один объект в другой не по ссылке, а в C++ можно.