This characteristic is extremely annoying, given the following:
SELECT * FROM my_table WHERE field1 != ALL (arrayfunc());
The above reruns arrayfunc() for every line
SELECT * FROM my_table WHERE field1 != ALL
(SELECT arrayfunc());
ERROR: operator does not exist: interval = interval[]
The above throws a tantrum, apparently because it considers it to be
an array of arrays.
Netzach