Не знаю, как ещё объяснить. Я думаю, что взаимодействие в A2 можно строить по-разному. Например, если я добавлю поле в активный объект, то чем это отличается от TLS по сути? Далее, разделяемая память - это плохая идея вообще. Она противоречит идее разделения ответственности, т.к. нет "владельца" данного куска памяти. Не только на уровне аппаратной защиты, а даже на уровне логики программы.

Если мы хотим разделить ответственность и если у нас есть абстракция процесса (треда, активности) как "изолированно текущего потока времени", то и TLS нужен. Просто, если его нет в явном виде, то в его роли выступает либо активный объект, позволяющий (ненадёжно) инкапсулировать то, что является контекстом данного процесса, либо мы вынуждены делать это на стеке.

Но я обещал не спорить. Однако я пытаюсь объяснить, т.к. Вы мне много полезного рассказываете и хочу по возможности вернуть долг

Касаемо реализации ActiveObject на железе, то я уже выяснил, что берётся донышко стека и хранилище TLS (укзатель на объект процесса) находится там. В упомянутом обсуждении на SO это приведено как один из вариантов реализации TLS. Так что активности в A2 и на железе, можно сказать, основаны на TLS.

А дальше уже наш выбор: либо мы видим эту абстракцию, либо не видим. Её пользу я считаю доказуемой, поскольку это один из вариантов инкапсуляции. Но давайте определимся, нужно ли Вам, чтобы я это попытался доказать или нет?