Well, there's no such thing as a reference to an array - at least not in the conventional sense (a pointer to the data).
You could pass a CONTROL reference - a "pointer" to the front-panel control that contains an array. But keep in mind all arrays don't exist in a control.
If you mean a CONTROL reference - It's NOT advantageous. It's probably worse.
If you pass a large array from main to subVI through wires, LabVIEW is smart enough to decide whether it needs to make a copy of the data. It'll make a copy if the subVI modifies the original, and the main does something else with the unmodified array.
If your subVI just reads elements from the array, or otherwise just looks without touching, LabVIEW will not make a copy.
However, I'l
l bet that if you pass a control reference to a subVI, and use the VALUE property to extract the value, then you are making a copy of the data, whether you change it or not. The reason is that you've broken the dataflow paradigm - LabVIEW doesn't know when you read the data (you could stash the reference and read the data a hundred times later on). So it cannot optimize for you.
It doesn't matter much on small data - integers, doubles, small strings, etc. But on arrays of large data, you want to avoid copying unless absolutely necessary. For that reason, avoid locals, globals, and references for large data.