I've been through the same hesitations, and although my site will not have initially any selling activity (I'm using Commerce just as a framework for presenting products, Cart disabled) I decided to build the whole product catalog on the Commerce foundation. Thus, if the decision to open the store comes up some day, it will be relatively easy to open. No revolution or migration would probably be involved.
Thus, before I even get to see the cart, I had to answer lots of abstract question to myself upfront. Basically I worked out two rules of thumb which seemed to guide me through doubts:
- Adding fields to product or product display? - go the Product way when the field describes a property that could be common for all product displays for that product. Of course, by having fields on product displays you have the power to make the product displays different, but you face the risk of multiplicating need for change, when something needs to be altered.
- As per what should make a separate product, and what just an
attribute - think of a Product as of SKU or a barcode - a unique stock identifier. This has to be unique, this will be bounding all Product displays and orders to a Product.
Whatever has to be distinguished, discerned in stock reports or invoices,
should be a separate product. So, basically, would you be fine with
SKU like TSHIRT, or would you prefer TSHIRT-MENS, or would you need
TSHIRT-MENS-XL, or perhaps TSHIRT-MENS-XL-BLUE... It all depends on
the particular store and bookkeeping. But the more detailed you go on the Product level, the more data and images you will have to enter into store.
I don't have a case of multipacks and such, but I imagine that you would definitely need a separate product for that, to be able to have a special bundle price for it, and - as I mentioned: - you'd probably want to see on the report: TSHIRT-MENS-5-PK to see whether you do a better business when selling bundles or multipacks.
Well, that's my opinion and I'd be happy to listen to other people's insights. Maybe my philosophy is wrong...