Heh, I actually agree that some of the called out use cases such as PinnedDeployment are needed but imo extensibility of kubernetes api make it non issue since you can just build your own implementations
My counter to that is that people mostly don't roll their own, so the defaults matter. Adding more implementations just increases the total amount of complexity going on.
That probably argues for "Deployment shouldn't have been a core object type", and I think k8s folks generally agree on that now, in hindsight. But the idea of generalizing CRDs to the extreme is relatively recent.