There are many aspects to this question, I'll try to outline some below.
1. Part 7 aspect.
From Part 7 point of view role names are almost irrelevant. Role meaning is given by template axiom, not by role name. Part 7 template model defines ordered role list, which in theory allows template instance representation without use of role identifiers at all (this possibility was ignored in favour of Semantic Web representation).
2. Part 8 aspect.
Part 8 (Semantic Web) representation of templates doesn't cover template axioms, it is impossible to deduce their meaning from it. Therefore it is reasonable to expect that role semantics will be somehow mapped to corresponding role predicates. SW best practice suggest usage of standard and meaningful predicates wherever possible.
It will be a good practice to use standard <namespace>/hasPosessor or <namespace>/hasClassOf Posessor predicate for all roles in all templates which describe property of some entity; standard <namespace>/hasClassifier predicate for role containing class of entity; <namespace>/hasObject for a role describing object-in-focus of some complex template statement; etc. (Here <namespace> stands for some standardised namespace which should be agreed separately.)
3. Specialised templates.
All considerations above are applicable to role names in different base templates. For specialised templates situation is similar, but for other reasons.
Part 7 again doesn't require unique role names. Templates as predicates with ordered role lists can receive correctly interpretation without role names.
Part 8 representation logically requires the same role predicates for specialised templates. Instance of specialised template should be an instance of a corresponding parent template, therefore predicates connecting it to role fillers should be the same. It doesn't follow from the formal meaning of OWL "inheritance" though!
As well as I can understand, OWL reasoner will not find any contradiction if roles of a specialised template are different from roles of a parent template. I know of one type of verification which is possible only if role names are the same:
In a ClassifiedIdentification template role hasIdentificationType is restricted by ClassOfIdentification.
If template IdentificationByTag is defined as specialization of ClassifiedIdentification and role hasIdentificationType is by some mistake restricted by Class "Tag String", then the reasoner will be able to find a mistake.
If role in a specialised template is renamed - mistake of this type will come unnoticed.
Possibility of such verification at OWL level has some value, of course. But this verification can be also done via template expansion, by FOL machinery, which doesn't use role names.
4. Summary
So in my opinion the best practice is:
- to give base templates semantically meaningful role names (and use standard predicate URIs) from some restricted set;
- to define specialised templates with the same role names (predicate URIs) which were used in parent templates.
But it is not a strict requirement, and not a reason to rework all IIP templates, for example.
And no implementer should rely on template role being unique for only one template or the same for specialized and parent template.