Garbage collection is probably deleting build dependencies. I guess that’s why your flake gets rebuilt after garbage collection. It detected that it’s missing its build dependencies and is trying to fetch them.
I don’t think a link is created by nix run. To create one, instead of nix run <installable>, use nix build -o <out link path> <installable>. Example:
$ nix run nixpkgs#hello
... will download and run hello...
$ nix-collect-garbage
... garbage collects hello...
$ nix run nixpkgs#hello
... will re-download and run hello...
$ nix build -o pleasedonotdeleteme nixpkgs#hello
.... will create a link called pleasedonotdeleteme, add it to the garbage collection roots, ...
$ nix-collect-garbage
... now will NOT collect hello ...
$ nix run nixpkgs#hello
... will use the cached hello
In your case, you would have to create a link for .#jupyter-wrapper.
Note that moving the out link (pleasedonotdeleteme) will break the garbage collection root, so the package will be garbage collected again.
For more information, see the manuals for nix run and nix build.