JS код всегда запускается в какой-то обёртке, которая позволяет выполняться этому коду на платформе. По сути, этот код может работать только с теми методами, которые отдаёт обёртка, то есть, с каким-то функционалом js код в принципе не сможет работать. Второе, так как вызовы идут через эту прослойку, всё работает медленнее. И может выдавать иногда неожиданные результаты.
Когда вы пишете на компилируемых языках (например, c#), то вы обращаетесь напрямую к используемой системе, можете работать без ограничений и без неожиданных результатов (и быстрее)