A limitação fundamental é simplesmente que a JVM não fornece chamadas finais em seu código de bytes e, conseqüentemente, não há uma maneira direta para uma linguagem construída sobre a JVM fornecer chamadas finais em si. Existem soluções alternativas que podem atingir um efeito semelhante (por exemplo, trampolim), mas elas têm um custo grave de desempenho terrível e ofuscamento do código intermediário gerado, o que torna um depurador inútil.
Portanto, a JVM não pode suportar nenhuma linguagem de programação funcional com qualidade de produção até que a Sun implemente as chamadas finais na própria JVM. Eles vêm discutindo isso há anos, mas duvido que algum dia implementem chamadas finais: será muito difícil porque eles otimizaram prematuramente sua VM antes de implementar essa funcionalidade básica, e o esforço da Sun está fortemente focado em linguagens dinâmicas em vez de linguagens funcionais.
Portanto, há um argumento muito forte de que Scala não é uma linguagem de programação funcional real: essas linguagens consideram as chamadas finais como um recurso essencial desde que Scheme foi introduzido pela primeira vez, há 30 anos.