Eagle does not even support giving the same net different names (It does not really come with something equivalent to labels. All it has is a feature to manually change the netname and one to show the netname. The crossref feature is not really a crossreference but just a different way of showing the netname.)
This to me means that the design might have been imported from eagle but it was heavily modified in kicad.
KiCad however needs to handle this differently as it really has labels of different classes. (This is because kicad is not designed for flat design but for hierarchical design.)
You can connect global, local and hierarchical labels at any layer. These do not need to have the same name (as that would limit how one can use the hierarchical design principles. Especially multiple instantiation)
For this reason priority rules exist that uniquely determine what the resulting name will be.
- Global labels (including power symbols) have the highest priority.
- Hierarchical labels are next in line
- Local labels have the lowest priority of user controlled net names
- Automatic net names have the lowest priority over all and are overwritten by any user controlled label.
There is however one problem remaining. What happens if you have conflicting labels of the same priority. I do not think that there is a documented behavior for this. Meaning it will be determined at random (depending on parsing order or something else. The main point being that there is no way a user can reliably determine which netname will result of such a conflict.)