get_query_var returns wrong default value

The default value of get_query_var( $var, $default ) is only returned if the query variable $var isn’t available in the global $wp_query object.

The order query variable actually falls back to the DESC value here:

if ( ! isset( $q['order'] ) ) {
    $q['order'] = $rand ? '' : 'DESC';
} ...

within WP_Query::get_posts(), so that’s why it’s used instead of your default value.

Be careful when applying native public query variables, to secondary queries, because they can also change the main query result.