I guess this is because names in the sys schema resolves to the resource database. (That is, mssqlsystemresource, not the one you call resource!)
I tried this:
CREATE LOGIN Villevalle WITH PASSWORD = 'LÄÖÄF"?=='
EXECUTE AS LOGIN = 'Villevalle'
go
SELECT * FROM sys.fn_my_permissions('somedatabase.sys.tables', 'OBJECT')
SELECT * FROM sys.fn_my_permissions('somedatabase.dbo.sometable', 'OBJECT')
go
REVERT
DROP LOGIN Villevalle
The first SELECt did indeed return a row with SELECT permission. But the other query produced an error message:
Msg 916, Level 14, State 2, Line 89 The server principal "Villevalle" is not able to access the database "somedatabase" under the current security context.