MySQL vede la sottoquery restituire solo un singolo campo/riga, e quindi lo tratta come qualcosa del tipo:
... and A.id IN ('1,2,3,4')
che si riduce a A.id = '1,2,3,4'
.
Per una query "in", non c'è bisogno del materiale group_concat, fai semplicemente:
... and A.id IN (select B.id FROM b where user = 3)