Нет , тип возврата Unit
не имеет значения.
scala> @tailrec def f(i: Int) { if (i >= 0) { println(i); f(i - 1) } }
f: (i: Int)Unit
Но:
scala> @tailrec def f(i: Int) { if (i >= 0) { f(i - 1); println(".") } }
<console>:11: error: could not optimize @tailrec annotated method f:
it contains a recursive call not in tail position
Вы должны иметь рекурсивный вызов в качестве последнего вызова, тип возврата не имеет значения.
Ваш код в вопросе в порядке, но название вопроса может вводить в заблуждение.