will take a stab.
You might need to have a limited user,X, created and then give access to each system table needed to each user X for each DB
So this is probably the least you need to do,
have a login say, test created Then
use master
GRANT SELECT ON sys.DATABASES TO test ;
EXEC sp_MSforeachdb N' use ? create user test for login test'
EXEC sp_MSforeachdb N'GRANT SELECT ON ?.sys.internal_tables to test'
EXEC sp_MSforeachdb N'GRANT SELECT ON ?.sys.partitions to test'
and so on for the specific tables you need.