Es stellt sich heraus, dass das JEDES Schlüsselwort von Postgres ist seitlich und kann nicht symmetrisch verwendet werden.
Der Arbeitscode lautet also:
SELECT items.id, items.title, ARRAY_AGG(tags.tag_id)
FROM items
INNER JOIN tags ON (tag.tag_id=items.id)
GROUP BY items.id
HAVING 27 = ANY(ARRAY_AGG(tags.tag_id))