Security Question involving Sys tables
All users have access to sys tables. Giving read access on the database is orthogonal to accessing the sys tables. System catalogs (ie. sys views and tables) have built in security and you cannot grant, deny or revoke read permissions on them. The visibility of entities in system catalogs derives from the permissions granted on the entity itself, not on the system catalog. To give an example, an user can see a row in sys.tables because it has VIEW DEFINITION permission on that table.

This is laso explained in the MSDN:


  The visibility of the metadata in catalog views is limited to
  securables that a user either owns or on which the user has been
  granted some permission. For more information, see Metadata Visibility Configuration.