WordPress query is not returning proper results

Take a look at your meta_query param. With and without country param.

// With country
'meta_query' => array(
    0 => array(
        'key' => '_al_listing_country',
        'value' => array(
            0 => 'Pakistan',
            1 => 'United Kingdom',
        ),
        'compare' => 'IN',
        0 => array(),
        1 => array(
            'key' => '_al_listing_model_name',
            'value' => array(
                0 => 'F12 Berlinetta',
                1 => 'California',
            ),
            'compare' => 'IN',
        ),
        2 => array(
            'key' => '_al_listing_condition',
            'value' => array(
                0 => 'New',
                1 => 'Used',
            ),
            'compare' => 'IN',
        ),
        3 => array(),
        4 => array(),
        'relation' => 'AND',
    ),
),

// Without country
'meta_query' => array(
    0 => array(
        0 => array(),
        1 => array(
            'key' => '_al_listing_model_name',
            'value' => array(
                0 => 'F12 Berlinetta',
                1 => 'California',
            ),
            'compare' => 'IN',
        ),
        2 => array(
            'key' => '_al_listing_condition',
            'value' => array(
                0 => 'New',
                1 => 'Used',
            ),
            'compare' => 'IN',
        ),
        3 => array(),
        4 => array(),
        'relation' => 'AND',
    ),
)

Your key, value and compare params are not on the same nesting level just like others meta_query filters. This is the problem.

Your country meta_query filter is not in array and is merging with other meta queries in different way. You should return array of array in country_query method.

/**
 * Returns a meta query for filtering by country.
 * @return type
 */
private function country_query() {

    if ( isset( $_GET['country'] ) && ! empty( $_GET['country'] ) ) {

        $data = array_map( 'sanitize_text_field', wp_unslash( $_GET['country'] ) );

        return array(
            array(
                'key'     => '_al_listing_country', 
                'value'   => $data,
                'compare' => 'IN'
            )
        );
    }

    return array();
}

or add result from country_query as array item like other filters do.

$country_query[] = $this->country_query();