This is because Amazon S3 is a push technology and not a pull technology like Cloudfront. Below are a couple of good articles that helped me understand the difference.
CDNs - push vs pull
Amazon S3 vs Amazon Cloudfront
I haven't messed much with Clouldfront, yet, but I will be once I get my site fully implemented/functional. For S3 to work this is what I did...
Under the main W3 Total Cache admin page, scroll down to the CDN section and select "Amazon Simple Storage Service (S3)". Do not enable yet.
Under the W3 Total Cache admin, go to CDN tab. In the general section, under :Host custom files" must be enabled. Under the "Configuration", obviously the Amazon S3 info must be filled in. :-) In the "advanced section, the "Custom file list:" must include the ftp directory of the files you want served from S3. I use the Nextgen Gallery plug in so I had to include "wp-content/gallery/*" in my list. That may be a default now, but not sure.
You can now use the buttons in the general section to upload your files to Amazon S3. The "Upload Custom Files" didn't work for me because my gallery is somewhere in the neighborhood of 2 gigs and I am sure that it wasn't designed for such a large load. I manually move my files with 3rd party sync software.
After your files are uploaded to Amazon S3, you can enable the entire CDN feature on the main