But quaternions are pretty good. They're a double cover but angles are an "infinity cover" of SO(2) and everyone understands angles. For animation purposes, being a single-cover is arguably a problem. An example in 2D is to suppose you have a rotation sequence
0° -> 90° -> 180° -> 270° -> X
and you want to return to the original state. Well, you can do that either by continuing to rotate in the same direction, corresponding to X=360° or by going back along the path you came corresponding to X=0°. These alternatives are unrepresentable in a single cover. (For angles you also have X=-360°, 720°, etc. corresponding to making any number of revolutions in either direction before coming to rest at the desired target, which if you think is weird makes quaternions an even better chart on SO(3) than angles are on SO(2)).
I agree quaternions are a good parameterization of SO(3). But they can still cause unexpected problems, e.g. any machine learning task involving quaternions will be made harder because the learned function must deal with the double covering.
Of course, the same problem exists for angles in SO(2), and from what I've seen people usually deal with that by using the [sin, cos] pair instead.