Hiding or showing tab pages can only be achieved by roles as mentioned by Peter, or by a boolean or enumeration field. If necessary you can set the boolean/enumeration value through microflows to match whatever condition(s) you need, but...
As you are talking about x-path constraints, I suspect that you really are talking about limiting the data rows in a data grid (displayed on a tab)?? If so, yes, you can apply multiple constraints, like:
[Status = 'Active'] [Tickets.Ticket_Requester = '[%CurrentUser%]' or Tickets.Ticket_EndUser = '[%CurrentUser%]'] [...other constraints]
You can put them separately as shown above, or you can put them within a single set of square brackets, using and/or and () brackets as needed. However, you cannot (as far as I know) put something in the xpath that is not linked to the datagrid object. So you cannot add an xpath about the current user being a member of the Administrator role as there is no path between the datagrid object and the role.
What you could do is place your datagrid in a table row, and have a second row with the same datagrid but with a different xpath query. You can then hide or show one of the 2 rows (datagrids) depending on whether the user is an administrator or not. In other words, always only have one datagrid visible, but choose which to show by setting the row visibility on role membership.
Did you consider using role-based security for tabs? (when you right-click on a tab, you can select "edit condition for visible", and you may want to set a role condtion, as well as an attribute condition if you need to. )
If so, please clarify what you are missing.