Общая память будет в любом случае (не по данным, а по коду), если потоки будут выполняться на одной машине, даже если потоки не будут иметь общих объектов.
Если же рассматривать совсем изолированные потоки, то чем это будет отличаться от двух ББ запущенных на разных машинах и обменивающихся данными через сеть ?
Для такого случая никакая многопоточность не нужна.

А модель памяти всегда отвечает на вопрос, "Что будет прочитано из конкретной переменной в конкретном потоке", чтобы можно было программу верифицировать. Естественно там будет много про синхронизацию. И да, даже если инструкции расположены в "правильном" порядке в машинном коде, то во время исполнения на уровне процессора они могут быть переупорядочены, если менеджер процессора посчитает, что выполнение "следующей" инструкции не зависит от "предыдущей"