Please describe your use case. The whole idea behind a template is so that you can have consistency in all the instances. However, I understand that there may be exceptions. Please help me understand what you're trying to do.
For the same reason why you allowed to change the categories of elements in AF 2017 R2.
An attribute in a derived element can just be a different kind of thing. Using the categories of the template by default is perfectly ok.
Our use case is the following:
We use categories to act like filters (or metadata) in order to get the attributes that we want.
And we have a template that have all the attributes that are possible, as we want to define UOM, point type, etc.
But, for example, each attribute can be a KPI, KCI, KSI or Optional and we need to filter the attributes by that, for example, only get the attributes marked as KPI. So, we intended to mark those attributes using a category called KPI, KCI, KSI or Optional but this classification could be changed by the user. So, in our case, the Template indicates our Recommended approach while the user could change to better represent his own asset.
So, as we cannot use Categories for that and we don't have an equivalent "metadata like" way of filtering those attributes, we had to use an inner attribute in order to work with this functionality, but that adds a problem as we cannot (for what I can tell) filter attributes based on a inner attribute value.
Another problem is that we want to calculate compliance for those, but in the same way, or we first discover if the attribute is of a given type and then look for those compliance's, or (what we did) we create a formula inside of the main attribute for each type (KPI, KCI, KSI, Optional) and then in the formula we check if that attribute is of that type and if it is we calculate, if not, we set "No Result". This approach was recommended by OSIsoft as we needed to do a Rollup of those values and that was the only way to filter it as Rollups also cannot check inner attributes to filter what to rollup.
So, ideally if the asset is marked as Extendable we would like the possibility to change the category (add/remove) or, at the very least, be able to add other categories so your premise is not broken as all the assets that were created based on the template have everything their parent have, but each asset created can Expand (or Extend) adding additional categories to be a more specialized object.