Ну я предполаю что второй вариант может хуже оптимизироваться jit-компиляторами, поэтому стоит вопрос насколько второй вариант медленнее. Зато с таким подходом большая гибкость, можно навернуть кучу своих оптимизаций при инлайне всех функций, плюс есть доступ к стеку в отличие от встроенного способа вызова функций на wasm
Вы, значит, хотите самостоятельно поддерживать явный стек в линейной памяти? И динамическую память тоже, или без неё обойдётесь?