Думаю, в принципе это баг.
Если попытаться поискать причины - патерн матчинг преобразуется в пачку функций вызывающих друг друга.
Соответственно, если трай преобразуется в джавовый трай, работает тейлрек, если более сложный и нужен патмат - не работает
Я ковырял это давным давно, суть в том, что там есть "невидимый" finally блок с каким то говном, а может даже и пустой, но короче там действительно вызов не в хвостовой позиции формально оказывается. Вероятно в dotty почистили этот бардак в компиляторе