You can do this easily using the `edit_posts_per_page` hook or `edit_{$post_type}_per_page` hook  for pages and custom post types

You can change based on the user role:

    function my_edit_post_per_page_role_based( $per_page, $post_type ) {
        //admin sees 25 posts per page
    	if (current_user_can('administrator')){return 25;}
    	//editor sees 20 posts per page
    	elseif(current_user_can('editor')){return 15;}
    	//author sees 10 posts per page
    	elseif(current_user_can('author')){return 10;}
    	//contributor sees 5 posts per page
    	elseif(current_user_can('contributor')){return 5;}
        return $per_page;
    }
    
    add_filter( 'edit_posts_per_page', 'my_edit_post_per_page_role_based' );

Or change base on user id:

    function my_edit_post_per_page_user_based( $per_page, $post_type ) {
        global $current_user;
        get_currentuserinfo();
    	//specific user id ex: user with the ID of 23
    	if (23 == $current_user->ID){
    		return 20;
    	}
    	//user group
    	$can_see_only_10 = array(2,5,36,55,47); //array holding the group ids
    	if (in_array($current_user->ID,$can_see_only_10)){
    		return 10;
    	}
    	
        return $per_page;
    }
    
    add_filter( 'edit_posts_per_page', 'my_edit_post_per_page_user_based' );