Of course they do. As more gets added to the OS, older hardware has a harder time keeping up. The argument has always been that Apple deliberately adds code to make old phones slower. Not code that adds some benefit, but code the exists solely to slow down old phones. That's what people argue over.
I’d argue that that’s irrelevant. Intentionality is not the issue here. What really matters is the end effect - 32-bit phones crippled everywhere and 64-bit devices with a marvelous battery life of 32 minutes from 100-0% (jk, it’s around 2-3 hours for the oldest 64-bit devices, and the iPhone 6s, which is what I’ve tried). They work kind of well, but are unusable as portable devices.
Is this done purposefully? Or is it a byproduct of iOS’ never-ending quest to add features? I don’t think it really matters. All I care about - and all everyone should care about - is the end result: is the phone significantly worse after two major iOS updates onwards? Yes. Will Apple change this? No. Solution? Never update iOS.
As per Apple’s fault and intentionality, I think they’re “almost fine”, although if I keep two devices on iOS 9 to prevent crippling, don’t deactivate the device, forcing me to update it and crippling it severely in the process.
Unless Apple forced you to update (the only case so far has been 64-bit devices on iOS 9, the activation bug, look it up), if you update, at this point in history - and especially if you’ve had iPhones and Apple products before - I think you should stop complaining (not you specifically, general you, obviously), and stop updating. Don’t update “hoping this time will be better”, because it won’t be.