Bind custom role to admin page

So for your information (based on add_menu_page) i am suggesting you to check the codex of add_menu_page in wordpress http://codex.wordpress.org/Function_Reference/add_menu_page if you look into the parameter of add_menu_page third one is for $capability just change it below code manage_options to manage_wpse_173073 (or any name you want) and just assign that capability to your custom role.

add_action( 'admin_menu', 'register_my_custom_menu_page' );

function register_my_custom_menu_page(){
    add_menu_page( 'custom menu title', 'custom menu', 'manage_options', 'custompage', 'my_custom_menu_page', plugins_url( 'myplugin/images/icon.png' ), 6 ); 
}

function my_custom_menu_page(){
    echo "Admin Page Test"; 
}

So I am changing the add_menu_page to custom capability (manage_wpse_173073)

 add_menu_page( 'custom menu title', 'custom menu', 'manage_wpse_173073', 'custompage', 'my_custom_menu_page', plugins_url( 'myplugin/images/icon.png' ), 6 );

then once i change that capabilities we need to assign that capabilites to custom role or selected role. http://codex.wordpress.org/Function_Reference/add_cap

function add_menu_caps() {
    // gets the custom role
    $role = get_role( 'your custom role' );

    $role->add_cap( 'manage_wpse_173073' ); 
}
add_action( 'admin_init', 'add_menu_caps');

the above code not tested yet but i hope it should work in my case, i was tried the same behavior over a month 🙂

EDITED:
For your case then create a new custom role then assign the above capabilities

 function add_roles_on_init() {
       add_role( 'custom_role', 'Custom Subscriber', array( 'read' => true, 'level_0' => true,'manage_wpse_173073'=> true ) );
   }
   add_action('init', 'add_roles_on_init' );

Make sure code yourself whenever user registering in your site then assign that user with your custom role, that’s all. If that user visiting the backend then they can see that menu whatever you want to display.

Hope it may help 🙂

Thanks.