MySQL ziet dat de subquery slechts één veld/rij retourneert en behandelt het daarom als zoiets als:
... and A.id IN ('1,2,3,4')
wat neerkomt op A.id = '1,2,3,4'
.
Voor een 'in'-query zijn de group_concat-dingen niet nodig, doe gewoon:
... and A.id IN (select B.id FROM b where user = 3)