Q:

Qual é o motivo dessa atribuição IF/ELSE?

Porque neste código o valor 0 é atribuído ao IF e o valor 1 é atribuido ao ELSE?
<?php
$flipCount = 0;
do {
    $flip = rand(0,1);
    $flipCount++;
    if ($flip){
        echo "<div class=\"coin\">H</div>";
    }
    else {
        echo "<div class=\"coin\">T</div>";
    }
}

Levando em consideração as respostas apresentadas, então é o contrário: 

IF = TRUE (1) e ELSE = FALSE (0)

A:

Em várias linguagens (Javascript e C também são assim), é comum que o 0 numérico seja tratado como equivalente a falso em desvios de fluxo (IF). Isso é por design.
No caso específico do PHP, ocorre uma conversão da exressão dentro dos parênteses do IF para um valor booleano. As seguintes expressões viram falso quando convertidas:

o próprio booleano FALSE;
o inteiro 0 (zero);
o ponto flutuante 0.0 (zero);
string vazia ("");
a string "0";
um array sem elementos;
um objeto sem elementos membros (somente PHP 4);
o tipo especial NULL (incluindo variáveis não definidas);
o objeto SimpleXML criado de tags vazias;

Roubei essas informações da documentação oficial.

A:

O php faz cast automaticamente alguns valores como: zero, vazio e null são convertidos em false logo cai no else, qualquer outro valor ex: 1, -1 são interpretados como true

