Хвостовая рекурсия обычно лучше, потому что она использует меньше памяти. В следующий вызов вы вносите только то, что вам нужно, что минимизирует использование памяти в стеке. Кроме того, когда хвостовой рекурсивный код оптимизирован, ненужные возвращаемые функции отбрасываются, что в некоторых случаях делает его немного быстрее.
Например, если возвращаемое значение функции является вызовом другой функции, нет необходимости хранить промежуточную функцию в стеке. Таким образом, код возвращается непосредственно к вызывающей стороне из внутренней функции.
Не хвостовая рекурсия оптимизирована для хвостовой рекурсии в некоторых случаях компилятором Erlang, но не рассчитывайте на это. Сделайте хорошей привычкой кодировать хвостовые рекурсивные функции, когда это возможно.