Well I partially take back my last question. In the error message, I missed the non-array / array part of "integer = text[]"
But I'm still confused. My subselect returns an array. If I cast it to a text array, ANY is happy. But if I don't do so, what exactly does Postgres think my subquery has yielded? And the error message still doesn't seem to make sense...