I think everything in here is the expected behavior. As Crossrulz said an array can be empty, if one of the dimensions are zero, but other dimensions aren't. Yes this can cause things like a FOR loop to execute with an empty array.
Lets say I have some loop talking to N serial devices. Each device will generate an array of values. So if I index those values coming out of the loop, it will create a 2D array. Now lets say I want to close my N serial devices. A programmer may ask how many devices are there? Well you can look at the number of Rows in that 2D array and it will be the number of devices that were used earlier. We might run that 2D array from earlier into a FOR loop and close each of them. But what if each of the N serial devices returned an empty array? Now if arrays worked like you expected, then the 2D array is empty and the loop should run zero times. But LabVIEW knows the 2D array has N rows, and 0 columns. So it can run the loop N times. This isn't the exact scenario, but something like this is a reason why you might want your 2D array to be empty, but have a non zero number of rows. You want it to run some other loop on the rows, even if the columns are empty.