Hide certain widgets from specific user roles in admin

You have to check for Roles and Capabilities in the action hook widgets_init and proceed accordingly.

add_action( 'widgets_init',  'remove_widgets_wpse_89138' , 15 );

function remove_widgets_wpse_89138()
{
    // http://codex.wordpress.org/Function_Reference/is_admin
    if( !is_admin() )
        return;

    // Grab current user info
    global $current_user;

    // Check for specific user
    /*
    $username = $current_user->user_login;
    if( 'the_user_login' != $username)
        return;
    */

    // Check for capability
    if( current_user_can( 'add_users' ) )
        return;

    unregister_widget( 'WP_Widget_Pages' );
}

Q&A’s of interest: