I think there are various issues at play here. Some are just cosmetic in nature, some are baffling, and some are confusing.
What you suggested at the beginning works, but it’s not ideal. The problem is that the connector is only a mechanical component, it has no notion of impedance control and the like. In my opinion, if a component requires such rules, then stipulating trace width and clearance should happen in the sheet, where this component can be found. One reason for doing so would be that I can later replace the connector (i.e., the complete sheet, where the connector can be found), and these rules should still be in place.
I think what @davidsrsb referred to is the fact that when hierarchical labels of different sheets are connected, there seems to be no clear rule as to which netclass will prevail, and that is confusing. And this connects (pun intended) to my earlier comment about the two sources of truth: you are right that only one truth will prevail, but not necessarily the one that you would expect, and there is no warning about this. So, if I set up the connections to be differential in one sheet, and connect to another, which has no rules, but prevails, then the lines that are supposed to be differential will take on the default values, and that might cause problems later on. The netclass definitions of the first sheet will be removed from the list, so there will be only one truth, but this removal happens behind the scenes. E.g., if the differential lines are supposed to have a width of 0.125 mm, and the default is 0.15, then you won’t even notice this in the layout.
Then there is the cosmetic issue: if I want to add a local label to a pin, then it’s got to be done on a wire, like so:
(Again, I don’t think that LVDS1_N/P should be part of the connector’s properties. The connector can be used for non-LVDS stuff.) The local label cannot be attached to the hierarchical label ST39/ST41 etc. There is actually the option to attach a netclass to the label
but that is not respected:
At this point, ST39 should be red, because the colour is set in the net class definitions:
This I would actually consider a bug.