I’m not sure if there are more elegant solutions but you could always make a different table for each case and use conditional rendering to only show the appropriate table for each user/case. Additionally, if you do want to render based on profile (and you are worried about your page getting bloated with all these tables), you could consider using page assignments.
But i am using that table filter for many other models( approx 5 models) for filters purpose in global filter. So to create different table according to different profile will affect snippet for global filter.
Also i have more used approx 12+ filters on that table. So to replicate and manage such thing on multiple model will be too much complex.