MySQL ser att underfrågan endast returnerar ett enda fält/rad, och behandlar det därför som något i stil med:
... and A.id IN ('1,2,3,4')
vilket kokar ner till A.id = '1,2,3,4'
.
För en "in"-fråga, det finns inget behov av group_concat-grejen, gör bara:
... and A.id IN (select B.id FROM b where user = 3)