If you have the data in a pre-compiled SQF then that is a bit wasteful since the parse-tree will contain a complete copy of the array and then, each time you want to use it, it will have to be constructed anew. I don't know how big you mean by "rather large", but it might well not be enough to really matter.
I have to do something similar in SPON Dynamic Terrain. I have 100k-1mb file which is just one big 2D array of height-map values. The file is literally just an array, without any code (and is auto-generated outside the game from a regular XYZ file). There is a pause while the file is loaded (perhaps I should split the file into smaller parts?). I use it to mould the initial terrain and then, as it is local, it disappears when the script is completed.
I use loadFile, rather than preprocessFilein this case, since I know the contents of the file is mechanically generated, so I know what is in it and I don't need preprocessing. Not actually tested whether that makes any difference, but every little helps:
[[0, 123, 11, 123, -12,...], ...]
_heightMap = call compile loadFile "heightMap.sqf";