Good question. This is mostly a future-proofing decision, since in the current implementation, quaternion<> can be created only with a fixed<> or a fixed-size external<> array type, both of which have fixed<> subvector (and temporary) types.
However, a vector type could have a subvector type that doesn't make sense as a temporary. A GPU-resident vector might be one example, since its subvector type should be a GPU-resident type, but its temporary type could arguably be a CPU-resident vector type . In the context of the quaternion<>, for example, this CPU temporary would be used to store a main-memory copy of the imaginary part of a quaternion living in GPU memory.
This example is admittedly contrived, since it would make more sense to have both a CPU and a GPU temporary, depending upon what type of operation was using the imaginary part. But, hopefully you get the point.