Having written games back in that time, I can at least tell you why I wrote my own VM: You get a custom language/compiler, which makes iteration time significantly faster than recompiling your game yet again, for yet another tiny tweak.
Or, worse, writing every bit of your game in assembly. (Worse in the sense of time consumed. In the sense of fun had, the VM approach takes some of that away ;)
Or, worse, writing every bit of your game in assembly. (Worse in the sense of time consumed. In the sense of fun had, the VM approach takes some of that away ;)