Efectivamente, si en el mismo esquema tienes tablas y vistas, al conceder el permiso de Select afectaría a ambas. Cuando se desea controlar permisos a través del esquema, típicamente se crea un esquema distinto para cada grupo de objetos que deba tener permisos
diferentes.
Si esto no es viable, entonces hay que rebajarse a asignar los permisos a cada objeto, uno por uno. Esto es un poco pesado si lo haces por código escribiendo los GRANT (a no ser que uses un cursor junto con sql dinámico para generar las sentencias).
Pero en cambio es bastante fácil si lo haces en la interfaz gráfica de SSMS, ya que puedes seleccionar "todos los objetos del tipo...", escoger Vistas, y ponerles la X a todas y luego marcar el permiso de Select.