At the moment, those fees are arbitrary configured in the pallet's config MaxXcmFees, this value could stay as a fallback if the consumer does not provide any value, or very well just be removed and force the consumer to provide it.
In any case, this would mean that a new param callback_xcm_fees is added to CreateSubParams and UpdateSubParams that will store this in the Subscription. Also, QuoteSubParams and SubInfoRequest should have it.
Then, xcm_send would take this new parameter value and use it in the fee_asset construction when defining Asset.fun