Merci, c'est un peu plus clair maintenant, mais ce qui m'étonne c'est que dans ton exemple tu n'as jamais de &array dans tes var_dump, alors que si j'exécute ton exemple, voici le var_dump juste après le unset :
array(1) { ["a"] => array(1) { ["b"] => &array(0) { } } }
Testé sous PHP 5.5.3 au passage ; ce qui me chafouine c'est que l'offset [b] est une référence et pas le tableau original *juste pendant l'existence de ma référence locale*.
Voilà un autre exemple peut-être plus flagrant [ https://wall.deblan.org/x189a/php/1/ ].
Sans même parler d'unset et d'affectation de référence, ici on voit clairement que tant que ma variable locale est une référence vers le tableau, celui-ci est flaggé avec un & dans le var_dump.
Après réflexion, le & du var_dump veut dire qu'au moins une variable fait référence à ce tableau, mais pas que le tableau est lui-même une référence vers une autre variable (c'est ce que je n'avais pas saisi).
C'est d'autant plus clair en voyant ça [ http://php.net/manual/en/internals2.variables.intro.php ], avec le flag is_ref__gc (utilisé pour afficher le & du var_dump ou non).
Bref, problème résolu. 