Я не уверен, публично ли Кен Томпсон изложил свои причины, но есть прямое объяснение.
UTF-8 был разработан для обратной совместимости с ASCII. Поэтому все однобайтовые символы UTF-8 начинаются с 0.
Он мог бы быть спроектирован как можно более компактным, то есть с 10xxxxxx в качестве префикса для двухбайтовой последовательности и всеми восемью битами, доступными для байта продолжения. Однако официально Юникоду никогда не понадобятся все кодовые точки, которые UTF-8 делает доступными сейчас, и если пространство на диске для текстовых файлов имеет значение, пользователь сожмет их.
Таким образом, целью разработки с более высоким приоритетом было сделать как можно более простым алгоритмическое обнаружение UTF-8, чтобы как можно больше приложений могло его прозрачно поддерживать. Очень немногие документы в любой другой кодировке будут случайно выглядеть как моджибаке UTF-8 (но см. «Буш скрыл факты».) Однако нельзя допустить, чтобы это слишком сильно замедляло декодирование.
Следовательно, байты продолжения имеют префикс, отличный от префикса начальных байтов. Они находятся в старших разрядах, поэтому различать их просто на любом процессоре. Выбор префикса также попадает в простую логическую последовательность: одиночный ведущий 1 обозначает однобайтовую единицу, два означают начало двухбайтовой последовательности, три - начало трехбайтовой последовательности или четыре - начало четырехбайтовая последовательность. Ничто не указывает на отсутствие байтов продолжения вообще. Если когда-нибудь возникнет необходимость в расширении UTF-8, продолжение этой схемы будет тривиальным.