It's just that their business model -- charging per GB, instead of per GB of new data that nobody else is storing yet -- leaves them susceptible to arbitrage. I.e. customers can steal the economies of scale if they collaborate.
You know how Starbucks charges $5 for a small and $6 for a large? It's the same thing. If two people want smalls, but collaborate, they can just split a large and save $2 each. It's the same idea, except that arbitrage becomes more realistic when it's electronic.
(I've ignored compression in the whole discussion for simplicity. If AWS wants a business model that isn't arbitragable based on compression they would have to charge based on how compressable your data is. Also, next generation compression algorithms -- another blog post on that later perhaps -- could achieve compression rates that have the same economies of cross-customer scale that data deduplication does, so really it would have to be price based on how compressable your data is __given all of the other data S3 is storing__.)
(EDIT: made starbucks example simpler.)
Deduping and compression at a higher level may be easier though less efficient. I had built a prototype mail system using a twisted POP server, qpsmtpd, and S3 as a mail store that deduped and compressed email bodies.
Notice that the way Amazon does price arbitrage with their compute nodes allows then to pull the power on them at any time when the price point moves above what you had payed for it. Anybody feel good about that happening to their data?
Not in my experience. My product uses >5PB data and we don't bother to do significant deduping. I've only heard of a few products at Google that do, and that's only when you can anticipate that most objects in the system are going to be duplicated many times, which is decidedly not the case in heterogeneous storage like S3's.