I can’t stand bash so I am often doing the following, which does not suffer from the problem:
$ nix develop nixpkgs#hello -c fish
$ which gcc
/nix/store/gk099cfff3s1g01adgvsn3957zabppvw-gcc-wrapper-10.2.0/bin/gcc
$ which gdb
/usr/bin/gdb
$ nix shell nixpkgs#gdb -c fish
$ which gdb
/nix/store/9h83vlhbszc44phpn4labxmlipfzjdz7-gdb-10.1/bin/gdb
But it would be still nice to make the bash sessions composable, in case one wants to work with the bash variables.
It seems like the problem is nixpkgs#bash, a build-time dependency of nixpkgs#hello, is run instead of nixpkgs#bashInteractive, so the completion and line editing isn’t really ‘destroyed’, it just isn’t there. This one does seem to work though: