Тут не от языка, а от компилятора зависит. С gcc, кстати, будет не обломчик (есть опция -foptimize-sibling-calls), хотя в спецификации это не требуется.
Ну а для компиляторов функциональных языков поддержка оптимизации хвостовой рекурсии является обязательным условием, которое указывается в спецификации языка.