O MySQL está vendo a subconsulta retornar apenas um único campo/linha e, portanto, a trata como algo como:
... and A.id IN ('1,2,3,4')
que se resume a
A.id = '1,2,3,4'
. Para uma consulta 'in', não há necessidade do material group_concat, basta fazer:
... and A.id IN (select B.id FROM b where user = 3)