Il problema non e' nella stampa, ma nell'algoritmo. La tua elaborazione prosegue finche' il numero decimale e' maggiore di zero, ma l'unica modifica che fai a quel numero e' dividerlo per 2. Ora, e' evidente che nessun numero maggiore di zero diventa zero solo a forza di dividerlo per due (l'elaborazione termina comunque quando il numero diventa sufficientemente piccolo perche' venga considerato zero dall'approssimazione), quindi devi fare il controllo sulla parte intera di $dec.

Codice PHP:
function mybin($dec) {
    
$bin '';
    while ( 
intval($dec) > ) {
        
$bin $dec $bin;
        
$dec /= 2;
    }
    return 
$bin;
}

echo 
mybin(8);