Потому что пайплайн LLVM сильно завязан на производстве натвного кода и не способен производить оптимальный wasm код сраду, а многие преобразования просо таки излишне и сильно запаяны в обычные проходы. Из-за этого emscripten и нуждаеться в binaryen, да собственно rust тоже (wasm-pack)