Я думаю, что это сбой в компиляторе. Следующий код демонстрирует то же поведение, что и ваш исходный код:
trait Test[M[A] <: { def map: M[A] } ] {}
def test[M[A] <: { def map: M[A] } ] = null
Это приводит к ошибке времени компиляции: «недопустимая циклическая ссылка».
А следующий код не (т.е. он прекрасно компилируется):
type S[M] = { def map: M }
trait Test[M[A] <: S[M[A]] ] {}
def test[M[A] <: S[M[A]] ] = null
Единственное отличие состоит в том, что структурная типизация применяется через псевдоним типа S здесь.