Firstly, neither <div> nor <span> centres the text. That is done by the applied CSS rules.
Using a <span>, which is an inline element, then adding display: block; is just silly here. Use a block level element.
Personally, I wouldn’t use either <span> or <div>, as both are generic containers with no semantic meaning. It’s difficult to say what I would use, as I have no understanding of your structure or how it’s intended to function. As it stands, the links serve no purpose. I would probably use either a paragraph - <p> - or a heading tag - <h1> to <h6>, depending on what else is on that page.
Use developer tools to look at the two versions and see what is different in the version using <p>. Once you spot that, you can adjust your rule accordingly.
That gives you the result you want, but you didn’t use developer tools to see why there was a difference using the <p> tag, and you’ve therefore missed an opportunity to learn something useful.
The difference in display was not due to the line-height, although adjusting that has compensated for the difference here. That approach would not work with multiple lines of text.
You should also be aware that by failing to find and address the actual reason for the change, you’ve left yourself relying on a “magic number” solution, which may not display the same way in all browsers.
* Initial value - normal
* Applies to - all elements. It also applies to ::first-letter and ::first-line.
* Inherited - yes
* Percentages - refer to the font size of the element itself
* Media - visual
* Computed value - for percentage and length values, the absolute length, otherwise as specified
* Animation type - either number or length
* Canonical order - the unique non-ambiguous order defined by the formal grammar
The <p> element has default margins top and bottom, <div> does not, line-height is exactly the same.
But the point is, any default browser setting can be overridden with whatever you like via css.
Choose an element according to what is most semantically correct, not by how it looks by default. You can always change how it looks with css.