Это наложено графической структурой - которая часто (но не всегда) поставляется операционной системой.
По сути, делать все "должным образом защищенным от потоков" неэффективно. Несмотря на то, что доставлять вызовы обратно потоку UI, безусловно, очень сложно, он позволяет самому потоку UI обрабатывать события чрезвычайно быстро, не беспокоясь о блокировке и т. Д.