I have seen the same behavior. When you start SOLIDWORKS using CreateObject (or Activator.CreateInstance() in C#), I think that the registry is not consulted to determine what addins are present.
CreateObject creates a lightweight version of SOLIDWORKS for embedding purposes. I believe this one was originally designed to allow embedding the OLE object into the office documents. You can still load add-in with LoadAddIn API or start SOLIDWORKS using shell and then connect to the instance using Running Objects Table.