A stack-based machine can be easier to implement than a register-based one, and I assume that was ultimately the decision-making factor here. The document "A Prehistory of the Ethereum Protocol" linked above hints at that.
WebAssembly is also stack-based, however the assembly is designed to be structured: blocks are explicitly terminated by an END instruction that trigger a stack clean-up. That makes the translation to register-based relatively straight-forward. That is not the case with the EVM: the stack is global, there is no such concept of code-block, and stack discrepancies can be introduced, sometimes voluntarily (compiler optimizations, etc.).
A Prehistory of the Ethereum Protocol– Roman Kiselenko Jan 09 '18 at 13:35