Это по сути та же причина, по которой языки с собственной VM все чаще "удивительно" оказываются быстрее нативных.
Дело в том, что при комппиляции приложения общего назначения на, допустим, C++, приводит к генерации очень общего x86 кода.
А вот зная процессор, можно на старте сгенерировать код с микрооптимизациями под конкретную архитектуру, чем JVM/.NET/JS и пользуются.
То же самое с компиляциями JS/CSS под конкретную машину, разрешение экрана, возможности ОС и прочее.