A quick note on the S3/Cloudfront option - make sure you enable "Compress Objects Automatically"; it's not enabled by default and wasn't provided for a long time.
You can also set your edge usage to "Use Only US, Canada, and Europe" vs. "Use All Edge Locations" to save money, depending on your performance needs in various geographies.
This is probably a better option than storing compressed data in S3 with a hard-coded Content-Encoding header, as it seems some web clients (like the Facebook app) display the raw gzip data.