Bo akurat pan Zelent stosuje dość przestarzałą wersję clearfixa - de facto najstarszą z możliwych i najbardziej hackowatą.
Pomyślmy: clearfix jest częścią prezentacji, zatem nie powinien być częścią HTML-a. HTML to warstwa treści i powinna wiedzieć jak najmniej o tym jak jest wyświetlana. Z tego powodu atrybut [style] łamie podział aplikacji na warstwy (prezentacja jest wciśnięta w treść) i mogą się pojawić problemy przy aplikacjach korzystających np. z Content Security Policy (które w pień wycina wszelkie style czy skrypty inline).
Zgodnie z architekturą BEM czy metodologiami takimi jak OOCSS jedynym łącznikiem między HTML a CSS powinna być klasa elementu. Ona oznacza stan danego elementu na stronie (np. czy dany przycisk jest wciśnięty itd.) i ten stan dopiero stylujemy przez CSS. Stąd pojawia się klasa .clearfix. Natomiast puste elementy HTML można w 99% zastąpić tzw. pseudoelementami ::before i ::after, które mają czysto prezentacyjny charakter - zwłaszcza, że w tym wypadku potrzebujemy ich głównie do celów prezentacji (żeby nam się float nie rozpadł).
Clearfix w BS to jego najbardziej skrócona i najszerzej przetestowana wersja, jaka istnieje i wywodzi się stąd: http://nicolasgallagher.com/micro-clearfix-hack/ - od człowieka, który stworzył normalize.css (więc wie co robi ;)). Jednak clearfix i tak jest najbardziej skomplikowanym sposobem na tego typu rzeczy. O łatwiejszych można poczytać tutaj: http://www.forumweb.pl/porady-i-tutoriale-www/css-clearowanie-czyli-problemy-z-float,47914 i wydaje mi się, że nadanie rodzicowi overflow: hidden jest o wiele łatwiejsze niż dostawienie nowego, pustego elementu ;)