Чем обусловлен тот факт, что JVM реализована как стековая ВМ?
Байткод для стековой ВМ компактнее получается. И видимо транслировать стековый код в регистровый код проще, чем регистровый в другой регистровый. Регистровые ВМ быстрее, но нужно не забывать, что в яве перфоманс обеспечивается JIT-трансляцией, видимо из удобвсва регистровой ВМ разработчики ее и выбрали. Вы сами попробуйте написать компилятор — для стековой ВМ это проще.
Лучше переносимость кода и сам код компактнее