In SAT Modulo Theories (SMT), with the theory of uninterpreted functions, all functions are first order, that is, they don't take functions as arguments or return functions.
In the theory of arrays, however, functions can take arrays as arguments, and return arrays as values.
However, my understanding is that arrays in SMT are just syntactic sugar for functions. That is, an array $a$ indexed by $I$ with elements of type $T$ is just modeled as a function $f: I \to T$. Lookup is just a function call, and extending an array $a[i] := e$ produces the array described by the function $f'(x) = ite(i=x, e, f(x)) $, where $ite$ is an if-then-else operator.
Is there something fundamentally different between arrays and functions that allows them to be passed as arguments? Or is the limitation that functions are first-order an artificial one?