Hi there
I had other stuff to do, so it took me a while to test Oliver's solution in Solved: Re: Is it possible to configure permissions at rec... - Power Platform Community (microsoft.com) but I've done it now and marked Oliver's reply as the solution. I've added a few comments against your suggestions in red below for other readers, which with the above link will hopefully be helpful.
In power pages you could assign table permissions, this will restrict the view based on the logged in portal user (contact):
1) on portal user (i.e. contact table) -> own contact record I don't think it is necessary to apply a permission to the portal user (i.e. contact table)
2) on user categories -> parent right based on the relation between contact and user categories I think a Contact Access permission is applied to the User Categories table, which points to the lookup to the portal user (i.e. contact table)
3) on categories -> parent right based on the relation between usercategories and categories. Agree and this can't be done in the Design Studio and has to be done in Portal Management
You could achieve the same by using a FetchXML query - or showing a subgrid for usercategories where you add a field from categories to the view. The use of table permissions above seems to be the right solution for my current requirement, but appreciate your suggestion about the subgrid as I can see there may be scenarios where this could be useful
Thanks