Pour 2 raisons :
1. Il faut garder à l'esprit qu'un document HMTL doit pouvoir être compris sans l'aide des CSS (cas des navigateurs texte ou des navigateurs qui supportent mal les CSS). En terme d'accessibilité c'est aussi préférable car les <hx> ont un style par défaut qui les distingue d'un <span> générique.
Un document HTML doit représenter la structure de tes données. Si dans tes données tu as des titres (dans le vrai sens du terme) ils doivent apparaître au niveau HTML. <span> est élement générique qui sert à tout et à rien, donc tu ne mets pas en évidence tes titres si tu l'utilise pour ça.
2. Les <hx> sont des éléments de type bloc (comme les <div> les <p>...) alors que <span> est un élément de type en-ligne (qui se comporte comme du texte, comme <b>, <img>, <a>...). En général on fait en sorte que les titres se distingues du texte c'est pour ça que les <hx> sont de type bloc.
---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog