My thoughts are that BOM have several uses themselves, the first being they are the long-life project document, and can be thought of as being associated with a particular schematic revision, and that the BOM's first goal is that it should form the bases of what your purchasing department (if you had one) needs to know in order to place an order for the correct parts.
The second (internal) goal is document enough details that alternative yet as far as your product's use of the actual physical
parts can be selected if necessary due to availability, or obsolescence. A MMBT3904 SMT transistor is electrically equivalent to a 2N3904 plastic through hole part, and would past schematic or spice design rules check, but it's a real pain to rework the part into even a single one unit of your product.
The parts list from a schematic drawing or PCB layout drawings may often not include all of these, typically banal, details necessary to keep your business going. Leaving you scrambling to remember correctly select an alternative part before the shipping deadline in twenty minutes before a long weekend begins...
I suspect the biggest lack of BOM is either existing kits not being designed by experienced professional engineers with actual product life-cycle (concept to being shipped), not just design, experience. I know that a number of kit makers are software or IT professionals, and as one of those keyboard cowboys, I can assure you I had to rediscover a fair bit of engineering best practices that would taken as being so self-evident it wouldn't need to be specified as a best practice.
Another possible reason I can think of would be that perhaps kit makers don't have it as a discrete document, but either combine it with, or split its would-be contents across, PCB documentation and purchasing & inventory records.
I take it most medium to large companies use component databases to manage a lot of these details for their products, but a possible "solution" would be to specify both the component's basic or root name (enough to get the correct datasheet, not a marketing "series" name) - which may sourced from multiple vendors, and the specific manufacturer's full part time, as would be used to ensure the correct part was ordered (e.g. PIC16F84A-04/P which includes the part revision, clock speed, and package type). And if you specify an URL for the datasheet, then extend that idea to include a link to octopart.com
or adapt and extend AdaFruit's own PartFinder databases
which gives key parameters for a given part, such that an alternative could be used.
Example to try to clarify the terminology I used: Replacing a National LM340T-12 with a TI UA7812, which are considered pin-compatible as far as I know, and I believe basically identical as far as technical specifications and assurances, or
using Linear Technology's L7912 to replace your the LM340T-12, would be just about always a drop-in replacement
, but it isn't considered an equivalent
part, but a (pin-compatible) replacement.