Page vs Custom Post Types Differences/Issues

Your rule doesn’t work for custom post types because pagename is the query var specific to the page post type. Your CPT query vars are the slugs you registered them with, doujinshi_en and doujinshi_jp.

You might be able to fix it by adding in additional post types via pre_get_posts:

function wpd_add_custom_types( $query ){
    if( $query->is_main_query() && isset( $query->query_vars['mdgpage'] ) ){
        $query->set( 'post_type', array( 'page', 'doujinshi_en', 'doujinshi_jp' ) );
    }
}
add_action( 'pre_get_posts', 'wpd_add_custom_types' );

But this will break if different post types share the same slug.

However, for your purposes you should have a look at using add_rewrite_endpoint instead, which takes care of generating the proper rules for you.

function wpd_add_endpoint(){
    add_rewrite_endpoint( 'mdgpage', EP_PERMALINK | EP_PAGES );
}
add_action( 'init', 'wpd_add_endpoint' );