Разве модель с многопоточным пользовательским интерфейсом потенциально не даст вам большей производительности, хотя и за счет большей сложности?
Не в большинстве случаев, и эта дополнительная сложность принесет больше вреда, чем пользы, в подавляющем большинстве случаев. Вы также должны понимать, что инфраструктура пользовательского интерфейса также должна работать с базовой моделью ОС. Конечно, это может обойти модель и абстрагировать ее от программиста, но в данном случае это просто не стоит.
Количество ошибок, вызванных несколькими потоками, обновляющими пользовательский интерфейс ad hoc, намного перевесило бы то, что было бы по большей части бессмысленным приростом производительности (если бы были даже выигрыши, многопоточность сопровождается собственными издержками из-за блокировки и синхронизации на самом деле, вы можете постоянно ухудшать производительность).
В этом случае лучше использовать несколько потоков явно и только при необходимости. Большую часть времени в пользовательском интерфейсе вы хотите, чтобы все было в одном потоке, и вы ничего не получите, если используете несколько потоков. Взаимодействие с пользовательским интерфейсом почти никогда не является узким местом.