Hey William,
It would have been to easy if the client requested just 'static bundles' :) So since it's friday afternoon, lets get creative...
Product-Type 'Computer'
This product type, is basically your bundle product with the usual default fields. For the customization you could create additional fields like this:
_preconfig_ram_product (contains the guid of the default ram product)
_preconfig_ram_type (contains identifier to specify ramtype)
The _ram_product field just contains the id of the default included ram for the bundle. the _ram_type field contains an identifier (taxonomy or custom id) so you can show a certain selection of different products (not just 8Gb vs 16Gb but to make sure its the right type of SDRAM that will work with the mainboard).
Same for CPU's etc to make sure a client can't select an AMD socket 3 processor when they should be confined to Intel i7 Cores.
---
When the user clicks on the 'computer bundle' product and views the detail widget, (s)he sees all the details of the main product and their 'configurable' parts. Now you could do 2 things.
1.
Extend the product detail widget so the 'parts' alternative products show up as dropdown items. Giving them + or - pricing just like product attributes by subtracting individual price from the default part price. When the user clicks 'Add to cart' it adds the base product + part products (with reduced price) to the cart. Then the user can checkout their products just like normal.
This would require heavy customization of the product detail widget, but leaves the overview widget and the entire checkout procedure out-of-the-box.
2.
When the user clicks on 'add to cart' you override the default action and instead of placing the 'computer bundle' product in the cart, you take the user on step/tabbed approach (just like checkout procedure). Each step asks for a confirmation or alternative part product to be added. Once the final step has been reached, you dump all products into the shoppingcart.
Taking the user by the hand and letting them choose page by page what ram/cpu/mouse they want can be less overwhelming than with the fist option of 1 page with 4-5 dropdowns, on the other hand the checkout process will be longer...
This option would require to break open the default 'add-to-cart' option and insert custom logic and templates between the product widget and the shoppingcart but has a nicer feel to it.
Again these are just ideas on how to possibly approach this, there may be smarter/easier ways to go about it...
Jochem