I suspect there are ways we could de-complicate this. Like considering most (or all?) of three/addons/* as {experimental | alpha | beta} and not restricting breaking changes there to major version updates. New APIs like THREE.ColorManagement would get the same treatment initially. JSDoc and TSDoc have tags for this. Then doing breaking changes and major version updates in three.js core less often, maybe once or twice a year.
But it does take up-front planning and management, and that isn’t free. Discussion for another time perhaps!