Non so bene dove si "perdano" i bytes, ma il metodo che hai usato va assolutamente evitato, dal momento che alloca un buffer potenzialmente molto grande inutilmente (se il file da scrivere fosse di 100 MB allocheresti inutilmente 100 MB di memoria). Usa la funzione che ho scritto nel mio post precedente.
---EDIT---
La funzione che ho postato prima ha un piccolo errore; invece di
codice:
    Dim buffer(BufSize) As Byte
inserisci
codice:
    Dim buffer(BufSize - 1) As Byte
.