I definitely agree with the practice of quoting enthusiastically in shell scripts, even when it's not strictly necessary. My theory is always that accidentally using
too much quoting will cause immediate problems which are easy to debug (removing the quotes, when necessary); whereas
not enough quoting may very well work fine on your development data, and only break later (maybe
much later), in ways which may be difficult to debug. Ditto with using curly braces around variable names even when not actually needed.
The quotes around the ${BPRESTORE} line are actually EXPLICITLY left out, because for some reason the application decides that the quotes means that that's actually a file and not a set of arguments
Yes, quoting a single variable "${args}" makes the whole thing a single argument; but IIRC bash arrays work like the standard $@ in which case quoting "${args[@]}" would be equivalent to having individually quoted each element of the array, just like "$@" does for the positional parameters.
(I'd be more certain of that, but I have a masochistic habit of trying to write all my shell scripts as portable /bin/sh scripts even when I don't need to, so I almost never use bash features...)