It is very common scenario I have seen in Managed Instance customers. With Managed Instance memory consumption is always 100% and you don't realize queries with high consumption of RAM having an impact on the overall performance on the server, use Query Store and explore query plans with high RAM consumption, and optimize them to make better use of memory. For example, avoid nested CTEs. Try to avoid user-defined functions that serialize query plans and the use of cores. Examine the instance error log and there you may find some memory related errors.
If you scale up the tier for more vcores, you will get more available RAM, and you may see performance improvements. Even when you say you don't need to scale up the tier based on CPU consumption. but when you scale up you see performance improvements. RAM available is correlated with the number of cores of the service tier. So query optimization is key to save money with Azure SQL Managed Instance.
For IO intensive queries you may find the storage subsystem does not have good enough performance also.
What is the prevalent wait type you see on those queries with poor performance?