Sometimes you need to store more complex information about a product, information that will be shared between many products.
Let's say that a product can be made of a fabric, where the fabric itself has many fields. Products therefore need to be able to point to a "supporting entity", a fabric instance. Many products can point to the same supporting entity, you do not want to duplicate thte fabric information on all products.
Supporting entites should have fields (and a field template), but they are not products. They do not have article numbers, Urls, published on channels, prices etc.
Suppliers could also be modelled using this new entity, rather than storing the information on pages. Currently we often have to work with products to modell complex data, and hide them from listings and searches. A custom, flexible entity would be a lot better for this.