The difference is that it’ll use the previous derivation while at the same time building the new one in the background. That means you don’t have to wait for nix to finish before doing stuff in your project.
I’ve been using the persistent cache direnv for a few months now myself, and it’s pretty close actually, but doesn’t handle well when you use stuff like import <nixpkgs> and update your channels regularly.
There’s the tradeoff that lorri will require the lorri watch process to run, I wrote Avoid having to run `lorri watch` yourself · Issue #2 · target/lorri · GitHub so at least it’s as automatic as the persistent cache approach.
Also i don’t have to keep deleting .direnv dirs to refresh my shell (at least that’s my hope, been literally using it for about an hour now).