Earlier quoted context omitted.
I'm not sure you can only see this in the light of 'more features'. From a more fundamental perspective GATs just lift a restriction. Rust already has generics and Rust already has associated types. Previously you needed to know/remember those features cannot interact for some reason, now they can. To me this is in a sense 'less' and not 'more'. So, a matter of perspective I guess.
But why have associated types in the first place since they have the same expressive power as generics? https://stackoverflow.com/questions/33647337/what-is-the-dif...
If you have a `trait A { type B; ... }` then for any type T you can implement one specific A with one specific B.
But if you have `trait A { ... }` then you can have a different implementation of A for every disjoint type B.
Then if you have `trait A { type C; ... }` you can have one specific C for every possible disjoint B.
So with associated types you can express additional constraints/semantics which you can not express with only "classic" generics.
Furthermore the compiler can rely on this constraints for e.g. type inference.