MySQL vidí, že poddotaz vrací pouze jedno pole/řádek, a proto to považuje za něco podobného:
... and A.id IN ('1,2,3,4')
což se scvrká na A.id = '1,2,3,4'
.
Pro dotaz „in“ není potřeba věc group_concat, jednoduše udělejte:
... and A.id IN (select B.id FROM b where user = 3)