If NI implemented what you are talking about, it is nothing more than an additional array of strings. So, if you would find it so useful, you can write code to implement the behavior you desire and link the array of strings with the array of data. You also have the option of using variants and using Variant Attributes to apply your descriptions. If you are doing a lot of processing, though, it would be a nightmare, as you would be constantly converting to and from variant.
The only time I have ever thought it would be nice was when I just hated carrying an array of strings around for the array. Most times, it is completely unnecessary. FWIW, TestStand does have the behavior you are talking about and NI has stated that they carry the array of strings around in the background. If you try to index by name, all TestStand does in the background is search the array of strings to get the index, then index the array. You can certainly do that in LabVIEW.
If you do this with functional globals or objects, then you wouldn't have to pass the arrays through every subVI. Of course, if your data names are constant, then you can drop the array of strings and use a functional global which knows where everything goes. That way, you do it once, then in your other code, you don't have to think about it. You just use your subVI and tell it which element you want by enum type or string.