Forse hai usato l'output buffering? Altrimenti non mi spiego quel comportamento.

Comunque puoi fare in modo che B ritorni ad A magari settando un valore in GET cosi' A se trova quel valore settato esegue solo la parte dopo l'header.

Pseudo codice:

codice:
// codice A
if (not GET[codice_di_controllo])
    esegui prima parte
    header -> scriptB
fine if

if (GET[codice_di_controllo])
    esegui seconda parte
fine if
codice:
// codice B
fai quello che devi fare
header("Location: scriptA.php?codice_di_controllo=1");
Certo non mi sembra un buon esempio di progettazione.