Why would one ever want to use `nix-env` on NixOS? It causes a lot of confusion for new people when they realize that what needs updating is not only channels of their user, and channels of root, but also nix-env-installed packages. Even once you resolve that confusion, you are still stuck with one more independently updated thing that you need to update in sync (due to graphics drivers), so the promise of easy rollbacks is a bit further away (because one needs to roll back one more thing and remember to do that).
@robryk
nix-shell doesn't link .desktop files and icons into your desktop environment for one. It's convenient for in-shell environments, but not for gui work.
environment.systemPackages requires a system rebuild, and also forces one application version onto every user.
If you're running a shared machine where multiple users login and want to use different versions of software, nix-env fits that use-case pretty well.