How can I include private pages in a page list?

You can just add a post_status argument:

wp_list_pages( array(
    'post_status' => array( 'publish', 'private' ),
));