I would also be interested in a thorough comparison. I have not used Spack, but I think their reference documentation is very good. The way to select packages on the cli seems to be a bit closer to the module system, and Spack can also use the module system.
They document how to use impure dependencies (such as mpi, openssl, blas) because it may make sense for security or computing reasons. Using impure dependencies is typically not done with Nix (except maybe on Darwin/OSX).
Considering their target audience (HPC) you can see the expressions typically have computing-related flags to quickly enable features, such as mpi. These things can be done, and are done with Nix in Nixpkgs as well. I do think the expressions are a bit less organized in Nixpkgs. On the other hand, Nixpkgs has 40 times as many packages.