I don’t think that (lack of) covariance motivated the implementation of Dict, Pair is simply convenient with the => syntax. In any case, note that internally Dict does not use Pair, it is just for construction.
Pair is generally used in contexts where you need to store a pair of objects that belong together.
I would mostly use Pair to signify intent, and for dispatch. Eg the Dict(::Pair...) constructor is different from the fallback Dict(itr).