If I understand your question correctly, you want to query for region field only if $region
variable is not empty? If so, this should work and it will be much prettier code than the one you suggested:
$meta_query = array(
array(
'key' => 'state',
'value' => 'Alabama',
),
);
if ( $region ) {
$meta_query[] = array(
'key' => 'country',
'value' => $region,
);
}
$query = new WP_Query( array(
'post_type' => 'my_post_type',
'meta_query' => $meta_query
) );