MySQL widzi, że podzapytanie zwraca tylko jedno pole/wiersz i dlatego traktuje je jako coś takiego:
... and A.id IN ('1,2,3,4')
co sprowadza się do A.id = '1,2,3,4'
.
W przypadku zapytania „w” nie ma potrzeby korzystania z funkcji group_concat, po prostu wykonaj:
... and A.id IN (select B.id FROM b where user = 3)