Частково це історичний залишок війни в браузері
IE і netscape змагалися за те, щоб зайняти ринок і продовжували випускати нові функції, які ставали все більш "приголомшливими", і змушували приймати сторінки, призначені для іншого браузера.
Це означає, що браузер мовчки приймає і ігнорує невідомі теги, після того, як комітети почали втягуватися ... ну у вас є комітет з проектування матеріалів і, як результат, безліч різних версій (з деякими неоднозначно сформульованими специфікаціями), де браузер хоче підтримувати більшість їх, і створення окремого аналізатора для кожної версії було б величезним наслідком. Тож (відносно) простіше використовувати один парсер з різними режимами.
З іншого боку, netscape та IE хотіли, щоб html був доступний для простої людини (як це було примхами тих днів), що означає намагатися робити те, що користувач хотів зробити, а не те, що він сказав зробити, і перемикатися на кожен звисаючий тег.
Погіршення проблеми полягає в тому, що є також кілька сайтів "підручника", які викладають неправильну річ і думають, що вони праві, тому що те, що вони навчають, працює.
Зрештою, це означає, що якщо ви зараз створили браузер зі строгим html-розбором 99% сайтів, вони просто не спрацюють.