/tag/tag_name/page/2 gives a 404 error

The current page number is set by the main query, not by your embedded sub-query. Also, you really should not create a second query, alter the main query instead with a filter on pre_get_posts.

add_filter( 'pre_get_posts', 'add_custom_type_to_tag_archive' );

function add_custom_type_to_tag_archive( $query )
{
    if ( ! is_main_query() or ! is_tag() )
        return $query;

    $query->set( 'post_type', array ( 'custom_type', 'post' ) );
    $query->set( 'posts_per_page', 10 );

    return $query;
}

Explanation:

When WordPress loads your tag.php it has already queried the database for tags. It knows already what tag it is, what post type and how many results there are in total and for the current page.
This is too late to change the pagination. And you should not waste that query, because it takes time.

So do not try to overwrite the main query later, alter the main query instead to get faster, more reliable results.