Ditto on TJ Maxx/Marshalls.
B is a common size, but I get him a lot of his clothes from Aeropostale as well, and sometimes Old Navy for pants/jeans.
The dress shirts at Aero are under $20 right now (clearance is an addt'l 70% off in store) and I also got him two pairs of flat-front bootcut pants for $15 each.