It might well be a mixture, but 95% of that mixture is vendor lock in. Same reason they don't support AGENTS.md, they want to add friction in switching.
If it was lock in they wouldn't make it absolutely trivial to change inference providers in Claude Code.
They can try add as much as friction they want. A simple rename in the files and directories like .claude makes the thing work to move out of CC.
It’s not like moving from android to iOS.