Мне кажется, раньше не было ::after ::before, не поддерживалось подобное везде как сейчас, и потому писали пустые блоки вроде
<div class="clear"></div>
У Сергея Чикуенка даже был вот такой хак
chikuyonok.ru/2009/06/float-columns.clear {
clear:both;
font-size:0;
overflow:hidden; /* тройной презерватив для IE */
}
Со временем пустые дивы заменили на псевдоэлементы, поправьте если я не прав.