CMB2 field not showing on front end category page

As from here I can see you used a parameter on your cat_sub_title() function but I don’t think you echo manually. you just hooking this function. That’s why it’s not working.

Try like this. and there is no need to pass any parameter but if you do please working with that.

add_action('genesis_before_loop', 'cat_sub_title', 5 );
function cat_sub_title() {
    $term_id = get_queried_object()->term_id;
    $catsubhead = get_term_meta( $term_id, 'cat_headings_cat-sub-heading', true );
        if ( is_category() ) {
            if ( $catsubhead ) {
                printf( '<h2 class="sub-heading">%s</h2>', $catsubhead );
        }
    }
}

Hope it makes sense.