Alternative to query->set that appends conditions instead of overriding

$query->set isn’t the only method.

What you want is $query->get. Using get you can retrieve your existing value, append the additional part you wanted, then set the query variable with the new argument

$tax_query = $query->get( 'tax_query' );

// add the extra parameter

$query->set( 'tax_query', $tax_query );

The adding the extra parameter is just appending another item using standard PHP array functionality.