WP_Query to output chosen term and posts with no term assigned

It’s actually pretty simple: You’ll want to use an OR relation, and use the NOT EXISTS operator for selecting posts that are not assigned to any terms in the specified taxonomy.

$tax_query[] = array(
    'relation' => 'OR',
    array(
        'taxonomy' => 'location',
        'field'    => 'name',
        'terms'    => $location,
    ),
    array(
        'taxonomy' => 'location',
        'operator' => 'NOT EXISTS',
    ),
);