In short, yes, and for the reasons you state: cleaner and clearer.
Occasionally I've come across places where there's a class better expressed as a multi-parameter type class with functional dependency because you can get more parametricity more simply that way, but usually an associated type family is a clearer and more flexible way of epressing it. Type families are much more intuitive to a functional programmer than functional dependencies.
GADTs have much cleaner, clearer syntax than existential quantification, with fewer conceptual hurdles, and it's easy to get the behaviour you want.
I'd recommend using the new stuff if you can, and the old ways if necessary. These lovely newer extensions could do with a higher profile.