You seem to misunderstand what a <div> is…
<center> is shorthand for <div align=“center”>, which is a deprecated construct, because the align attribute is presentational but conveys no contextual information, and therefore has no place in HTML.
A <div> is a generic block-level element that conveys no contextual information about its contents but is simply used for grouping content together for the purposes of styling, scripting or internal linking.
A <header> is a block-level element with a specific purpose, which is to mark up the header area of the document, which according to the specs is “a group of introductory or navigational aids. A header element typically contains the section’s heading (an h1–h6 element or an hgroup element), but can also contain other content, such as a table of contents, a search form, or any relevant logos”.
A <header> is not ‘a kind of <div>’, in the same way that <h1> is not ‘a kind of <p>’. Yes, they are both block-level elements, but so are plenty of others. They are to be used in different situations, and they have different purposes.
One for presentation (wait, div is suppossed to be a hook for presentation, right?; so <center> somewhat fits?), but only for technical/implementation resons, and one for being attributed semantic meaning, which goes against html 4.01 and xhtml 1.0 specs, but can also be challenged for technical/implementation resons.
<div> can be used as a hook for presentation applied by CSS. Neither <center> nor align=“center” fit that bill as they don’t use CSS.
And I have no idea what the rest of that sentence means. For a start, the <header> element was only introduced in HTML5, so any discussion of how it applies to HTML4.01 or XHTML1.0 is completely nonsensical, you might as well ask why 19th century cookbooks don’t give instructions for microwaves.
But anyway, <header> is a semantic element, which is exactly what HTML has been building up all the time: elements that convey the meaning or purpose of the content within them. The vast majority of undeprecated elements in HTML4.01 do convey information about their contents, and so the addition of <header>, <nav> etc as semantic elements in HTML5 is a natural and logical development of the language.
What’s so different between div align=“center” and div top=“0” or div bottom=“0” ? (What about div align=“top” or div align=“bottom” ?
There’s no difference in principle between <div align=“center”> and <div top=“0”>, except that the latter has never been a recognised part of any spec. All those examples you gave are either deprecated (as they are presentational) or have never been part of any spec (but would have been deprecated by now if they had ever appeared).
Which is worst? I vote for html5 specs which imposes instances of the semantic-less div as semantic, and by doing so, creates two opposing and competing standards for the div, that are to be used for at least a decade from now on.
What? There are no opposing or competing standards for the <div>. HTML5 is entirely consistent in adding semantically meaningful elements such as <header> and <nav> while continuing to ignore semantically neutral presentational elements such as <center> or attributes such as align.
I won’t disagree that there some aspects of paving the cow paths that I think are inappropriate, such as the inclusion of <font>, but in general there is a good deal of consistent thinking within the HTML5 draft specs.
Never miond that <nav>, <header>, <footer> are WAYYYY to specific to fit in the html theory.
Have you ever looked at a list of HTML elements?
We have both <abbr> and <acronym>, don’t you think the distinction between those two is a bit too fine to worry about?
Do we really need <code>, <kbd>, <samp> and <var>?
Don’t you think that <bdo> is a bit too specific and rare to need an element?
What is the point of <address> when a generic <p> or <div> could be used?
HTML has always gone into some detail about the semantic difference between elements, and has tried to give a complete list of elements that allow authors to ascribe a role or function to all aspects of the contents. When HTML4.01 was finalised in 1999, web design was at a more primitive stage to where it is now, so it is no surprise that some elements, like <header> and <nav> were not felt to be relevant or appropriate. They are now, and they are far more relevant than many of the arcane elements in the list.
Most sites will have reason to include a <header>, a <nav> and a <footer>. Many will make legitimate use of <section> and/or <article>. But how many ever use <cite>, <dfn> or <ins>?
<header> is an instance of <div>, like how <b> is an instance of <strong>? Have you not known that?
Since <div> is semantic-less, so should <header> be.
Sorry, but you are really, really, really confused about this.
<header> is not an instance of <div>.
<b> is not an instance of <strong>.
<strong> indicates text content that needs strong emphasis. It’s default presentation is bold text.
<b> indicates text content that should be rendered in bold for typographical reasons. Its default presentation is also bold text.
Just because the default presentation is the same does not mean that one is a subset or instance of the other. They are independent and distinct elements that convey different meanings and are used for different purposes, but just happen to have the same default presentation.
<header> is a block-level element for a specific type of content, as are <p>, <blockquote>, <ul> and many others. <div> is simply a generic container that can be used when none of the available block-level elements are syntactically and semantically valid. It’s a fall-back for when you need a CSS or JS hook and there’s nothing better available. That doesn’t mean that <header>, <p> or <blockquote> are types of <div> or instances of <div>, they are alternatives to <div>.