Om du sätter float på ett element kommer dess container inte att anpassa sig efter det flytande elementets storlek (det flytande elementet tas ur innehållsflödet). När du använder clear-tricket så gör du så att alla efterföljande element ändå tar hänsyn till det flytande elementet istället för det sista elementet som är med i flödet ( i ditt fall <p> ).
I ditt exempel fanns inga efterföljande element som kunde påverkas av din clear-div, därför fungerar det inte.
Jämför dessa:
http://pastie.org/1048701
http://pastie.org/1048704