потому что binaryen обычно убирает от 15-40% кода сгенерированного LLVM даже максимальным уровнем lto и стрипнутыми секциями. Binaryen заточен оптимизировать именно стековый байткод, в то время как LLVM проводит в основном оптимизации на регистровым IR. Кроме того LLVM делает очень много вещей, которые имеют смысл для нативных целей. Binaryen это потом вынужден иправлять / оптимизировать