This should works
add_action( \'init\', \'register_category_again\', 1 );
function register_category_again() {
$user = wp_get_current_user();
if ( $user->roles[0] != \'your_custom_role\' ) return;
global $wp_taxonomies;
unset( $wp_taxonomies[\'category\'] );
global $wp_rewrite;
$rewrite = array(
\'hierarchical\' => true,
\'slug\' => get_option(\'category_base\') ? get_option(\'category_base\') : \'category\',
\'with_front\' => ! get_option(\'category_base\') || $wp_rewrite->using_index_permalinks(),
\'ep_mask\' => EP_CATEGORIES,
);
register_taxonomy( \'category\', \'post\', array(
\'hierarchical\' => true,
\'query_var\' => \'category_name\',
\'rewrite\' => $rewrite,
\'public\' => true,
\'capabilities\' => array(
\'manage_terms\'=> \'manage_categories\',
\'edit_terms\'=> \'manage_categories\',
\'delete_terms\'=> \'manage_categories\',
\'assign_terms\' => \'read\'
),
\'show_ui\' => true,
\'show_admin_column\' => true,
\'_builtin\' => true,
) );
}