Add, edit specific CPT with custom role

There’s no such hook named load-themes.php in WordPress. One of the hooks you can use to add custom capabilities is after_setup_theme.

Also, there’s no need to use 'themes.php' == $pagenow && isset($_GET['activated']) condition there. What are you trying to achieve this way?

Try to use this code instead:

add_action( 'after_setup_theme', function() {
  $role = get_role( 'subscriber' );

  $singular="catalog";
  $plural="catalogs";

  $role->add_cap( "edit_{$singular}" ); 
  $role->add_cap( "edit_{$plural}" ); 
  $role->add_cap( "edit_others_{$plural}" ); 
  $role->add_cap( "publish_{$plural}" ); 
  $role->add_cap( "read_{$singular}" ); 
  $role->add_cap( "read_private_{$plural}" ); 
  $role->add_cap( "delete_{$singular}" ); 
  $role->add_cap( "delete_{$plural}" );
  $role->add_cap( "delete_private_{$plural}" );
  $role->add_cap( "delete_others_{$plural}" );
  $role->add_cap( "edit_published_{$plural}" );
  $role->add_cap( "edit_private_{$plural}" );
  $role->add_cap( "delete_published_{$plural}" );
} );