Hello GonG,
First of all this is a good question and only Odoo depth level expert can answer this. (y)
Here I wrote a way to deal with this requirement.
Your solution can be done by Property configuration in BOM. To configure that you need to go to menu Manufacturing >> Configuration >> Properties and Properties Groups. You can define properties and groups as per your wish and then select those properties in BOM. To see the properties related configuration, a user need to be included in Technical Settings/Manage Properties of Product group. Now at the time of sale order creation, you can select properties. If you are aware with in depth flow then you must know that Sale order creates procurement and from procurement system will decide to create production order or purchase order based on supply method. So when you select Properties in sale order line, from there system will pass those vaules to procurement order and if your product's supply method is "Produce" then procurement order will go for production. Now to be able to create production order system must need to find BOM. At the time of BOM, system will compare procurement properties ( which is came from sale order indeed !) and BOM's properties. ( In case of if more then one BOM found for one product. ) Which ever BOM's properties mathes with procurement properties then system will select that BOM. This is answer of your question.
If you are using V8 then unfortunately OpenERP / Odoo made hide the option to select properties in Sale order line. You need to go to menu Settings >> User Interface >> Views and need to find the custom view "sale.order.form.sale.stock" for object "sale.order". You need to uncomment follwoing line.
<xpath expr="//page[@string='Order Lines']/field[@name='order_line']/form[@string='Sales Order Lines']/group/group/field[@name='address_allotment_id']" position="after">
<field name="property_ids" widget="many2many_tags"
groups="sale.group_mrp_properties"/>
</xpath>
By uncomment this line you will able to select properties in Sale Order Line and then those values will transfered to Procurement Order. If you manually do procurement order then you can select properties directly over there. Then you need to "Run" the procurement. So as per Procurement Properties which are matches with BOM properties, that BOM will be selected. So this way you can configure the system to deal with situation where you need to define multi BOM's for single product and as per different situations you want different BOM's for one product.
Hope this helps,
Do not hesitate to ask again if you still confused !