A workaround by hiding the fee (CSS)

/component/com_virtuemart/assets/css/vm-ltr-site.css
Around line 1106
hide .vmshiment_cost by taking it from previous group and specify hidden

.vmpayment_name, .vmpayment_cost, .vmshipment_name{
padding: 0 2px;
}

.vmshipment_cost{
visibility: hidden;
}

Would you still like to know

how to get rid of the + and

why it's there in the first place?

It is hardcoded in the administrator\components\com_virtuemart\plugins\vmpsplugin.php

$costDisplay = '<span class="'.$this->_type.'_cost fee"> ('.$fee.' +'.$costDisplay.")</span>";

You can do that by a simple Language override

It is a simple language override but many people will not find it as the language override is "COM_VIRTUEMART_PLUGIN_COST_DISPLAY", which is set as "Discount/Fee:".

Unless you look directly at the code you will not realize that you have set the code to split the value using "/" as the point of split.

A nice bit of coding but isn't it rather unnecessary?

"list($discount, $fee) = explode( '/', vmText::_( 'COM_VIRTUEMART_PLUGIN_COST_DISPLAY' ) );"

Should this not be set as two different lines?

$discount = vmText::_( 'COM_VIRTUEMART_PLUGIN_COST_DISPLAY_DISCOUNT' );
$fee = vmText::_( 'COM_VIRTUEMART_PLUGIN_COST_DISPLAY_FEE' );

Then admins would be able to find the correct language override in search.