error_message_on() and field_error_proc should return an HTML span and not an HTML div.
A form will often place error_message_on() inline with some text - the label for the field, perhaps. But browsers are entitled to surround DIVs, as block-level structures, with line-breaks. (See HTML spec). IE, in particular, does so, messing Rails' reputation for 'out-of-the-box' functionality.
Yes, the unwanted line-breaks can be removed by various css hacks but it's not intuitive and (IMHO) a real waste of a developer's time.
Summary: the developer can surround a SPAN with a DIV if they want, but it's much more difficult to neutralise a DIV if you don't want it.
Besides which, a SPAN is The Right Thing To Do(tm) if the content of the generated error tag is simply text - there's no block structure to enclose.
PS: I would probably also argue that the form helpers should surround their fieldWithErrors with a SPAN - there is no hierarchical structure there either and form elements are inline not block. I vote to change field_error_proc too.