This is a confusing part of the spec (which has changed recently) -- there is no longer a subtying relationship between the types Collection and Catalog. They're two independent types that just happen to share some fields of the same name.
pystac shouldn't conflate them in the implementation.