Нет таких фундаментальных причин. См. Go, Erlang, Haskell (GHC), Pony.
может, там проблемка с размером стека. Если ты выделяешь большой стек, то у тебя много памяти впустую потрачено (скажем, миллион потоков ждет IO, и занимает 4 Кб стека когда 852 байта каждому), а если стек - linked list, то у тебя слишком много индиректов и тормоза