There are a few reasons I don't do this. For one, deploys take longer. Also S3 isn't able to negotiate the Accept-Encoding header. So you have to assume that all your clients will be able to handle gzipped assets.
You can use your app as a root origin for your assets, and then use something like CloudFront to offload most of the work.