Why is the decision made on the fly each time?

It seems the main argument for not upgrading is that hosts that haven't upgraded yet - for whatever reason - will suffer, and so will their customers. This is only a real argument because the decision gets made so close to the release, so it would come suddenly.

The way to do this is to publish a plan well in advance - say, six months - that says, "In WordPress 5.x, we will be dropping support for PHP 5." Make sure everybody knows it's coming and has time to move. You put this information in the Dashboard of successive WordPress versions, so everybody knows it. Then when you reach the day, you follow the plan as promised.

Each time WP makes the decision not to do it right now, without instead saying when that day will be, it reinforces the idea that hosts don't need to upgrade yet.