I think that is totally on purpose. They will get you with cheap storage or instance cost and then they will drain you with egress cost or persistent storage cost or ip addresses or whatnot.
Yup. It makes chasing the best storage deals an endless game of whack-a-mole.
S3 Intelligent Tiering actually does help with this considerably though. They do try to shift your objects to the storage class that makes the most sense cost-wise based off of access patterns and don't charge anything additional for doing that.
There is a small per object/month charge for Intelligent Tiering. The 30 day minimum, even for objects in the Frequent Access Tier, can also drown you in prorated charges if applied to a high churn prefix.