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.