Сильно надают. Каждый рекурсивный вызов - это лишние затраты времени и резервирование места в совсем не резиновом стеке. Рекурсию в императивных языках имеет смысл применять только там, где она сильно упрощает код и при этом не увеличивает вычислительную сложность алгоритма.
P.S. Любой цикл можно заменить на рекурсию, а любую рекурсию можно заменить на цикл + стек (в простых случаях, к которым относится и факториал, только на цикл).
Ну, если бы он написал рекурсию не через задницу, а по-нормальному, то была бы применима хвостовая оптимизация, которую компилятор развернул бы в тот же цикл. Правда, я не в курсе, умеет ли это жаваскрипт.