I think each customization should have type & configuration, like we do for promotion actions etc. We could think about CustomizationHandler, which would work similar way the ShippingCalculators work, determine the configuration form & process it, set the correct form type for CustmizationValue and process it. Eventually it could calculate the price out of this configuration, but we could also extract this part to separate Calculator service.