Eu definitivamente escolheria o S3, a menos que você tenha milhares de usuários muito ativos ... E mesmo que você faça algumas doações ou publicidade, deve cobrir o custo. O armazenamento do S3 é muito, muito barato comparado ao seu próprio servidor. Armazenar 100 GB de dados custaria cerca de 9USD por mês, com alto nível de redundância. Isso significa espelhar para pelo menos 4 locais de armazenamento, com durabilidade garantida transacional de 99,9999%, por um custo que não lhe custaria, de forma realista, um único servidor em 3 anos. O tráfego pode ser caro, mas você está pagando isso com todos os provedores de colocações, então não há diferença real a menos que você consiga grandes números.
O S3 é internamente um dicionário de strings altamente otimizado, capaz de armazenar milhões, se não bilhões, de arquivos relacionados.
Honestamente, salve-se da frustração e vá embora com todos os problemas de backup, redundância e administração do servidor por um pequeno preço, então foque em manter o desempenho do site ao redor. Muito mais divertido também.
Além disso, se o uso da largura de banda for realmente astronômico, considere usar seu servidor da Web como um servidor 'de borda'. Na maioria dos cenários de armazenamento em massa, 1% do conteúdo é solicitado 99% do tempo (pense nas fotos do Facebook). Alguns scripts que espelham localmente 1 GB das imagens solicitadas recentemente e são eliminados pelo último acesso, devem ser fáceis de fazer e manter os custos de largura de banda do S3 no nível gratuito, provavelmente.