Indeed, this is a really silly situation. Even if you've legitimately bought an app, if you update it and the update requires a later iOS version than your device supports then the only way to get it back is to pirate it.
From a developers perspective:
- We want to support the majority of our customers, who are almost all on iOS 4 or later. Many new features we want to add to our apps require iOS 4 or even 5, so sometimes we have to drop support for older versions.
- We can't really give out copies of older versions. The only way for us to do that is to register your phone under our developer accounts and make a custom build - which is time consuming, and besides we're only allowed a limited number of registered devices and most of those will be used for testing. It's probably against apple's TOS too.
- We can't easily make old versions available. For a free app, we could release a separate app for the new version and leave the old one, but you'd lose any saved data from the old version when upgrading, and for paid apps it means customers would have to buy the app again.
- Sometimes we can make an app compatible with older iOS versions, by detecting it and removing some of the new features. Not always though - some of my recent apps have been iOS 5 only, and making them support 4 would have been extremely impractical. iOS 3 support would have been impossible. It's worth asking the developer though - sometimes it's only a couple of lines of code, and it's no trouble.