In a perfect world one codebase handles all possible needs, so everyone accepts it. In a real world, you cannot expect that all people pull in the same direction. Sooner or later there
will be so much disagreement that groups will naturally go their own ways because there is no way to agree anymore, and the disagreement is too expensive to handle without the split.
Sometimes one group will fail, sometimes the two groups create such different products that two needs are met by the two products that one product could not meet on its own.
I agree that when possible in practice, it is best to avoid splits, so the splits can be seen as an "evil". But I don't think it is reasonable to say they are always a bad thing.
I agree that consensus changes can be breaking & with time they should become less frequent & severe until finally ossification. No crypto is ossofied yet. More work is needed.
Not to mention BSV: As recent as a couple of months ago hardforked in a rather radical feature - coin confiscation w.o. private keys. Absolute garbage scam!
So you also don't upgrade the node version when there are improvements beyond consensus? Like validation speed up or improved RPC stuff, bug fixes etc.?
Read.Cash also derailed, for the moment. This method of coercing people to comply with someone's whimsies has odors usually accompanied by flavors of last night's leftover vomit.