If a function does not have an attribute listable, it does not mean that it does not accept lists of input (yes those are three negations in a single sentence). But if a function does have it, like e.g. Sin, you can see that the input is transformed into separate calls:
Trace[Sin[{1., 2., 3.}]]
{Sin[{1.,2.,3.}],{Sin[1.],Sin[2.],Sin[3.]},{Sin[1.],0.841471},{Sin[2.],0.909297},{Sin[3.],0.14112},{0.841471,0.909297,0.14112}}
that 'splitting' is courtesy of the listable attribute
If you, however, have some special numbers, you see that Sin will not apply the listable attribute:
a = {1.0, 2.0, 3.0};
a = Developer`ToPackedArray[a];
Trace[Sin[a]]
{{a,{1.,2.,3.}},Sin[{1.,2.,3.}],{0.841471,0.909297,0.14112}}
it will do them 'all at once'
My guess would be that InterpolatingFunction does exactly the same
EDIT:
To further improve my point, if you remove the Listable attribute from Sin it will still accept lists (it is, though, not a guarantee that all listable functions have this behavior of course):
Unprotect[Sin]
SetAttributes[Sin,Listable]
Attributes[Sin]
Trace[Sin[{1.,2.,3.}]]
ClearAttributes[Sin,Listable]
Attributes[Sin]
Trace[Sin[{1.,2.,3.}]]