Barcodes are not expensive
Retailers can and do buy Global Trade Item Numbers in bulk from their national arm of GS1. You get a company prefix, from which you then allocate numbers to products. The fee scale (for the UK) is at http://www.gs1uk.org/about-us/Pages/Become-a-member.aspx and is based on company turnover, and how many barcodes you want.
Frankly, if you’re using up to 1,000 numbers, and making up to £500k turnover, £107 joining fee + £117 annual licence fee is not that expensive. Sell 1,000 items - just 1,000 units of the same code - and it's less than a penny per item. The paper label costs more than the code! RFID tags are still very expensive in comparison, and I actually don't see retailers needing to tell the difference between one pink shirt, 16" collar, long body, and another.
If you’re only selling products in your own stores, you don’t even need to buy Global Trade Item Numbers. The 200-299 range of prefixes is reserved for private use (http://www.gs1.org/barcodes/support/prefix_list says ‘Restricted distribution’). At least one large retailer I’ve worked with uses 200 prefixes for all their own stock.
Other retailers use different symbologies entirely. The symbology is how the pattern of dark and light areas are mapped to a character set, and the tech specs of the pattern, and there are at least 10 in common use. I’ve worked with retailers that used ‘Interleaved 2 of 5’ (aka ITF) or ‘Code 128’ in their businesses.
Motorola’s problem now is that smartphone cameras are good enough, with open-source software (Zebra Crossing, aka ZXing, for example), to recognize all 1D and 2D barcodes very quickly – you don’t need a specialist device to do it. For bulk scanning I would still use a proper barcode scanner, as they’re even quicker, but for occasional scans the smartphone can do the job.