strengerst,
Потому что когда вы инлайново задаете обработчики событий, то есть в атрибутах элемента, то вы, как бы пишете тот код, что внутри функции-обработчика, и чтобы предотвратить стандартное действие - надо вернуть false. А если вы просто напишете onsubmit = "onb()", то этот код неявно вернет undefined, а не false, несмотря на то что onb возвращает false.
Лучше вешать обработчики в коде javascript-а. Тогда не будет таких непоняток. К тому же у вас будет доступ ко объекту Event, который передается первым аргументом в функцию-обработчик (В IE он глобален)
document.getElementsByTagName("form")[0].onsubmit = onb;
И ничего лишнего в верстке