<p>
<form action="doit">
</p><p></p>
<form action="doit">
<p></p>
<p> опционален. Алгоритм парсинга по стандарту автоматически неявно подставляет </p> перед любым элементом, который в HTML4 называли «блочным» (сейчас их называют «non-phrasing flow content»). А потом парсер видит бесхозный явный закрывающий тег и исправляет эту ошибку, добавляя перед ним открывающий.<div>. Но с большой вероятностью это не нужно, форма сама по себе контейнер, стили можно навешивать прямо на нее.