This is certainly good practice as long as anyone contemplating this considers the cost implications versus serving from S3 directly.
However you are going to pay for Cloudfront requests in addition to S3's. In the vast majority of cases, it's insignificant compared to the savings you can achieve on the bandwidth side. (And at a certain level you can ask AWS to waive CF request fees entirely).