1) Java а уж тем более python (даже pypy) сосут по производительности, т.к. у них большие накладные расходы. И речь тут даже не о виртуальной машине или интерпретаторе, а об явной возможности располагать объекты на стеке. Выделить память на стеке это одна машинная команда в один такт, а в куче это большая цепочка вызовов, в худшем случае доходящая до пространства ядра.
К сожалению java и python не имеют средств для ручного управления памятью. Хотя для scala есть проект offheap, правда он немного заглох.
Одна из самых популярных библиотек для Python - NumPy. И она написана на Си.
Но есть золотая середина: движок написан на C++, но имеет API для другого языка. Пример тому Unity, который сам написан на C++, но логика реализовывается на C#.
А почти все перечисленные вами движки живут на передовой графических технологий. Зачастую даже мощнейших процессоров и видеокарт им не хватает. Вспомните шутки про Крайзис.
2) Сборка мусора может блокировать все потоки приложения. Из-за этого у вас будут постоянные фризы.