Show only one category in main query, issues on tag page

If the only issue you want to correct is the output of single_tag_title, you can correct the value via a filter by grabbing the tag query var directly:

function wpa90852_fix_tag_title(){
    $tag = get_term_by( 'slug', get_query_var('tag'), 'post_tag' );
    return $tag->name;
}
add_filter( 'single_tag_title', 'wpa90852_fix_tag_title' );