Anyway games are going to pre-allocate large arrays and work on them, for cache affinity. That doesn't depend on C++ vs. Java. No need to create a separate object for each item in your factory, but rather a row in the array(s).
And even if you do create a new object for each item, it's better to do that on heavily optimized heap, than manually allocating/deallocating memory in the same thread. You end up writing that heap in C++ anyway.
Clearly someone has not grown the factory large enough.
Besides, their game is already one of the most cross-platform capable games I've ever seen. There's not a lot of feasible platforms that Go/Java would open up.
Also, choice of programming language isn’t what makes porting games difficult. It’s the platform specific graphics, input, window management, sound, etc. All of which aren’t handled by switching to one of the languages you mentioned.
It seems to me like Factorio is exactly the kind of game that would benefit from a low level language, as it's relatively simple graphically and all the complexity is in the simulation, making it CPU-bound.
In this kind of game, no matter how well it runs, there will be someone who has built enough that they're wishing it would run even better.
"Write once, run anywhere" :)