Por que o posicionamento absoluto dentro de <button> funciona de forma diferente de <div>

Espero que o código a seguir coloque meu intervalo no canto superior esquerdo do botão, mas isso não acontece. Por que é que?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <style type='text/css'>
        </style>
    </head>
    <body>
        <button style='height:100px;width:100px;position:relative;'>
            <span style='position:absolute;top:0;left:0;'>text</span>
        </button>    
    </body>
</html>

<span> é colocado em relação à vertical-meio linha (com preenchimento de 3px, não sei explicar).

Substituindo<button> com<div> faz lugares<span> no canto superior esquerdo.

Pergunta, questão: por que o posicionamento absoluto no botão (com posição: relativo) se comporta de maneira diferente do layout usando<div>? E como faço para corrigir isso?

Antecedentes: eu uso duas divs absolutamente posicionadas no botão para criar um botão de largura flutuante com cantos arredondados.

EDITAR: IMPORTANTE O IE 8.0 funciona exatamente como eu esperava (extensão no canto superior esquerdo), o problema que vejo está no Firefox (3.6.6).

questionAnswers(2)

yourAnswerToTheQuestion