The other factor is if the phone doesn't have a user-replaceable battery then it has a short self-life regardless of the software situation. Batteries don't last.
That is why "lasts whole day" isn't good enough for a new phone. In a year it will not last a whole day. And it will seriously hurt the longevity of it, but noone cares.
Anyway, there are still so many devices where you can remove the battery out there.
And not everyone has money as highest priority, so I'd rather take my time and buy a new battery for an old phone than throwing it away and creating unnecessary electronic waste, just to save a few bucks.
Plus when you buy a new device, you will need some time to transfer your data, and set it up again, possibly experience new bugs and what not. So that also costs some time.