The problem is not just the combinations of parts that goes into a typical PC, but IMO there's a significant portion of PCs out there that are not stable, or will become unstable when stressed (like when it overheats, or receives bad power).
Lots of things will make any program crash, overheating chips will introduce errors into the calculation. Bad memory cells may not be accessed until you get a lot of memory usage (i.e. Civ 4). Bad power would simply corrupt your data. It's not like your mom & pop store, nor the big brand name computer companies would spend days stress testing the computer until you're sure it's stable.
If you compound an unstable computer with a not quite ready game, you'll get the rift between those who have minor bugs, and those who get CTDs. Not to mention it is impossible to write perfect code. (I've seen a technically incorrect Hello World that compiled) Also the fact is more often than not they simply don't have enough people familiar with the code and the time needed to really beta test everything.