OP ha quasi capito bene. GROUP_CONCAT
dovrebbe eseguire il wrapping delle colonne nella sottoquery e non nella sottoquery completa
(Sto ignorando il separatore perché la virgola è l'impostazione predefinita):
SELECT i.*,
(SELECT GROUP_CONCAT(userid) FROM favourites f WHERE f.itemid = i.id) AS idlist
FROM items i
WHERE i.id = $someid
Ciò produrrà il risultato desiderato e significa anche che la risposta accettata è parzialmente errata, perché puoi accedere a variabili di ambito esterne in una sottoquery.