Thanks Ness but I don't think that solves my problem. The user has the exact same permissions (member of db_datareader only) on another database on the same instance and is able to view the table list in Object Explorer.
Even when I grant them VIEW DEFINITION on the database in question they are still unable to view the table list.