J'esaye de trouver ton problème mais il est ma foi fort étrange. En quoi ajouter un print_r pourrait affecter la destruction de la variable ? Je n'ai jamais vu ça. As tu essayé avec d'autres méthodes ? Le bug se reproduit-il ? Je ne peut que te conseiller d'user et d'abuser de var_dump afin d'essayer de comprendre ce qu'il ce passe.
Même si je ne suis capable à l'heure actuelle de résoudre ton bug, je peut te proposer un fix qui certes est moins propre pour la mémoire qu'un unset (cette différence est pour moi négligable dans 99% des cas) mais qui est tout à fait fonctionel :
Après si tu tiens à conserver ta méthode actuelle je pense que le resultat des var_dump pourrais nous aguiller. Si bien sur quelqu'un n'a pas trouvé la solution entre temps.