select a private page as parent for another private page

The following conditions is assumed to make it working

  • Classic Editor is in use, since Gutenberg/Block Editor is rendered by Javascript, it requires another solutions and so far I am not sure if there is override option yet.

For the code you have shown, it does not work because the number of arguments for add_filter() is not specified.
By default, only 1 argument is used. To use more than 1 argument, it is necessary to specify.

Code correction (The asker’s code is for Classic Editor)

The following is tested, it works for any post types even custom post types.
The following code is proved to work by putting in theme’s functions.php

/**
 * Add private/draft/future/pending pages to parent dropdown.
 */
function wps_dropdown_pages_args_add_parents( $dropdown_args, $post = NULL ) {
    $dropdown_args['post_status'] = array( 'publish', 'private', );
    return $dropdown_args;
}

add_filter( 'page_attributes_dropdown_pages_args', 'wps_dropdown_pages_args_add_parents', 10, 2 );
add_filter( 'quick_edit_dropdown_pages_args', 'wps_dropdown_pages_args_add_parents' );

Disable the Block Editor (for Classic Editor’s method)

In case anyone would like to disable the Gutenberg editor for testing the above code, you may put the following code in theme’s functions.php

add_filter( 'use_block_editor_for_post_type', 'sing_use_block_editor_for_post_type', 10, 2 );
function sing_use_block_editor_for_post_type( $can_use, $post_type ) {
    switch ( $post_type ) {
        case 'custom_post_types':
        case 'post':
        case 'page':
            $can_use = false;
            break;

        default:
            $can_use = true;
            break;
    }

    return $can_use;
}

Override method for Gutenberg/Block Editor

Please use the filter
rest_{$this->post_type}_query to override the query

Because Gutenberg is using Rest API to load data, page list is one of them.
The following is tested on the same test pages with Parent and Child both private. The following code is proved to work by placing in theme’s functions.php

add_filter( 'rest_page_query', 'test_rest_page_query', 10, 2);
function test_rest_page_query( $args, $request ) {
    // please add your own logic such as screen id check logic

    $args['post_status'] = array( 'publish', 'private' );
    return $args;
}