Multiple meta_values in the pre_get_posts filter?

You will need to create two queries. The first will be one that pulls all of the custom post types in the search query.

    $args = array(
        'post_type' => YOUR-POST-TYPE,
        'posts_per_page' => '-1',
        's' => get_search_query(),
    );
    $sort_query = new WP_Query($args);
    $included_results = array();

You will then have to probably print out your results so you can find where the zip code is in the array.

Run the loop, checking if the zip is in your zip code array (in_array()) and add the id to the included results array (ex: $included_results[] = $post->ID)

Next, you will want to end and reset the query, and create a new query using the same args as before, but adding 'post__in' => $included_results