The reason is the way each game engine handles different things. In BeamNG, the game engine is designed in a certain way to support certain features. (hence, why we haven't gotten things like multiplayer, scratch decals, etc.) For example. In the torque3D engine, getting the vehicle to move forward takes coding to allow users to set custom keybinds. The line of code would state: "if keybind state is down, set acceleration forward." (as a basic idea. Not actual code) Keybind would have to be coded to allow for custom keys and inputs. Torque3D and Unreal Engine handle this type of code differently, therefore a complete re-write of the game's code would be required. This would take years of time just to be able to implement all the features we currently have. That means we wouldn't get any actual gameplay updates for a few years.
A good analogy in my opinion is this: Imagine you're working on reconstructing a real life car but you don't know any dimensions, what materials it's made of, what engine it uses etc. & then suddenly one day you see the same car but fully restored & more pristine than yours. You then decide to totally abandon your current progress & the thousands of hours put into it by burning the car to the ground just to start over for no reason. When that's done, you restart the reconstruction for which you will need to spend another thousands of hours & thousands of $$$ but this time you use a shiny but totally not fitting frame for it. When you're done, it looks tip-top & gathers all the attention you could imagine, but the experience of driving it isn't there as the whole underside of the car is some generic thing that everyone can buy with nothing special or exciting to it
Thank you to all three of you for explaining it well (or linking Nadeox's explanation) - this is one of the good sides of the BeamNG community that I wish we saw more often