Чтобы избежать путаницы, я не буду использовать термин «объект» в этом ответе. Вместо этого давайте использовать «класс» и «экземпляр». Я уверен, что мы все понимаем разницу между ними.
Маркировка вашего COM-класса с ThreadingModel «Квартира» означает, что его экземпляры будут загружены в STA. Процесс создания этих экземпляров будет определять, будут ли они все входить в одну STA или в отдельные STA.
Как вы обнаружили, COM + загрузил несколько экземпляров в отдельные STA.
Гарантия, которую вы получаете с STA, заключается в том, что один экземпляр никогда не будет доступен нескольким потокам одновременно. Отдельные экземпляры одного и того же класса, если они загружены в отдельные STA, несомненно, могут быть доступны для разных потоков одновременно.
Таким образом, STA - это действительно способ защиты данных вашего экземпляра. Не ваши данные класса. Любые «общие» или «статические» данные в вашем коде COM должны быть защищены вами.