A long time ago (January 2005 to be exact), I wrote a blog post describing a Windows Installer resiliency repair scenario that we used to see in some old daily builds of Visual Studio 2005. In that post, I recommended not using the Class or ProgId tables for COM registration and instead using Registry table authoring. However, I had a hard time defending that recommendation because I didn't have a lot of knowledge about those tables at the time.
Yesterday, I noticed that Rob Mensching posted a really nice explanation on his blog (including example MSIs) to demonstrate interaction issues and resiliency repairs that can be triggered by advertising COM information in an MSI using the Class and ProgId tables.
I personally agree with Rob's recommendation, but I also understand there are certain scenarios where it might make sense for a setup developer to do this. I strongly encourage anyone using or thinking of using COM advertisement in an MSI via the Class and ProgId tables to read Rob's blog post in order to get a better understanding of the ramifications of doing this and then weigh the trade-offs of these setup design options.