MySQL ve que la subconsulta devuelve solo un campo/fila y, por lo tanto, la trata como algo así:
... and A.id IN ('1,2,3,4')
que se reduce a A.id = '1,2,3,4'
.
Para una consulta 'in', no hay necesidad de las cosas de group_concat, simplemente haga:
... and A.id IN (select B.id FROM b where user = 3)