packages.nix need only be regenerated when the resolver changes (and if the user has made changes to packages-configuration.nix, regenerating when not needed is actively harmful), whereas default.nix might more frequent regeneration (when adding extra-packages, for example).
Simple solution: if packages.nix exists, only regenerate it if --derive-stackage is passed. This would also speed up runtime.