Для того, чтобы облегчить задачу браузера по распознаванию элементов на странице. Чтобы он посмотрел - опа, тут тэг <nav> - значит это навигация по сайту скорее всего. Не знаю, для чего конкретно это нужно. Но знаю, что это помогает в SEO оптимизации
Чтобы задать стили ему. Редко уже по тэгам стилизуют элементы. Почему класс не на header, не знаю, можно и на header, в некоторых случаях просто не получается
если header один на сайте то смысл добавлять класс header к header'у
У селекторов есть еще скорость обработки браузером, теги ищутся медленнее чем классы, + класс это не всегда неуникальные элементы, класс может быть и у уникального блока