Forget about perf. Who wants to import a separate stack to get a sidecar tool. Separately, if you're an elixir user this would mean you can't easily hook it into say compiler callbacks (though if I'm reading this code directly it reads Erlang ast -- I tried doing a typechecker for elixir ast, and decided that reading bytecode was a better choice since it's simpler)
You type the registers as data flows through them. It's easier, trust me. Both Erlang and especially elixir puts a whole lot of sugar on top of the low level instructions which can make reasoning about data structures harder. And as a bonus it works with all beam languages.
Hmm ok, I'll take your word for it. There is another issue too though, which is that the BEAM itself is being replaced with a native-code VM. I don't know if the compiler for that starts with bytecode.