Il tuo cast è sbagliato, non puoi annullare l'annidamento di text
.
Prova
INSERT INTO mytable (x, y)
SELECT
unnest('{x1, x2, x3}' :: TEXT []),
unnest('{y1, y2, y3}' :: TEXT []);
Si noti che questa forma di selezione si comporta in modo strano se entrambi gli array non hanno la stessa lunghezza.
La funzione unnest in Postgres 9.4+ ti consente di espandere più array, utilizzando un array per colonna di output:
INSERT INTO mytable
SELECT *
FROM unnest('{x1, x2, x3}' :: TEXT [], '{y1, y2, y3, y4}' :: TEXT [])