Some people have suggested using unconfirmed Bitcoins for small transactions, but that's a headache. Coinbase only buys "confirmed" Bitcoins. Read their blog as to why. It's not so much a rip-off problem as a problem with downstream transactions getting stuck because there's an unconfirmed input.
Coinbase's business is to provide a way for Bitcoin retailers to accept payment without taking a risk on the price of Bitcoins dropping. Bitcoin dropped 25%-30% today, then partially recovered. If you're a goods retailer with a 15% markup, you don't want to be exposed to a big drop like that. So if Coinbase insists on confirmed coins only, that sort of sets the pattern for Bitcoin retail.