Roles need relogin or explicit set role from a session to take affect
whereas the granting of privileges take immediate affect.
select_catalog_role allows you to select on the catalog views (dba%, v$%...).
select any dictionary allows you to select the dictionary tables that is sys tables.
You can't select sys tables with only select_catalog_role role.
Users with Sysdba privileges can access the sys schema, another method of
giving system privileges without giving Sysdba privilege Is giving the
SELECT_CATALOG_ROLE. allow SELECT privileges on all data dictionary views.