It most likely depends on why the allocation is occuring. I made a simple example where I wired an array straight through in one case, and use build array in the other case.
In that situation an allocation only occurs in the build case (true) as one would expect. LabVIEW shouldn't allocate a new buffer in the case that doesn't need it (false). It can simply re-use the original buffer on the other side of our false case. So the output tunnel is basically a pointer to a buffer. So it can either use the original buffer (false case) or if a new buffer was needed, then it uses that pointer.
I would say a good rule of thumb is that LabVIEW will try not to do any un-needed allocations. So if the case does not need it, then LabVIEW won't do it.