That's funny, you've discovered a way to implement the periodically wished for "abstract type which acts abstractly" - in general scala won't stop you from instantiating classes even when the abstract types have never been made concrete, but it will here:
scala> new T1 { }
<console>:10: error: object creation impossible, since type U in trait T1, which equals Int is marked `abstract' and `override', but no concrete implementation could be found in a base class
new T1 { }
^
scala> trait T2 extends T { type U = Int }
defined trait T2
scala> new T with T2 with T1 { }
res1: T with T2 with T1 = $anon$1@2a7a17a6
I realize that doesn't answer your question. It does not not make sense, if that helps. Does it make sense to you?