Hey Dave,
Figured out what it was. Its by design!
I'm not actually using the same class, I'm doing something like this:
o1 = CreateObject("app.a")
o1.OpenDatabase("mydbc")
o2 = CreateObject("app.b")
o2.OpenDatabase("myotherdbc")
And it turns out that the class itself is what conforms to the single/multi-use, instead of the automation server. Christof (of course ;-) provided the info I needed:
>>The single-use option refers to the class, not the automation server. If you have two classes A and B, both are single-use and you instantiate both from the same client, you only get a single EXE. However, if you had instantiated A twice, you would end up with two EXE servers.