SQL Server: sys.master_files vs. sys.database_files
Contains a row per file of a database as stored in the master database. This is a single, system-wide view.
Contains a row per file of a database as stored in the database itself. This is a per-database view.
SELECT * FROM sys.master_files should list the files for each database in the instance whereas
SELECT * FROM sys.database_files should list the files for the specific database context.
Testing this here (SQL 2K8), it works as per the above?
Update: If you're not seeing rows from sys.master_files, it could be a permissions issue as BOL states:
The minimum permissions that are required to see the corresponding row are CREATE DATABASE, ALTER ANY DATABASE, or VIEW ANY DEFINITION.
Whereas for sys.database_files just requires membership in the public role.
Admin 12 days