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.