How to check if a post has any one of many shortcodes?

So yes, as you say you can’t pass an array to has_shortcode, which is confirmed in the docs, so you need to do the ‘OR’ operation manually, which would look something like this:

$shortCodesToTest = [ 'wpdocs-shortcode-1', 'wpdocs-shortcode-2', 'wpdocs-shortcode-3'];

$anyShortCode = false;

foreach ($shortCodesToTest as $sc) {
    if (has_shortcode( $post->post_content, $sc) ) {
        $anyShortCode = true;
    }
}

Now use the $anyShortCode variable as you like – it will be True if any of the shortcodes were found. For example:

if ( is_a( $post, 'WP_Post' ) && $anyShortCode ) {
    wp_enqueue_script( 'wpdocs-script');
}