Это фундаментально намного глубже, чем .net. Потоки являются собственными объектами ОС. То, что называется Managed Thread, является просто оберткой вокруг собственного потока.
Итак, вернемся к вашему вопросу. Куча памяти распределяется между потоками одного и того же процесса, потому что они расположены в одном пространстве виртуальной памяти. Стеки индивидуальные.