I like the terms this article used: Divergent, Convergent, Congruent.
https://blog.flyingcircus.io/2016/05/06/thoughts-on-systems-...
In a 'divergent' system (e.g. managed by bash scripts), the resulting system state might diverge from what the bash scripts have, because of manually running commands on the system.
In a 'convergent' system, the system tries to reach a target state by comparing what's there with what it's got.
In a 'congruent' system, the system is forcibly built to equal the target state.
But more generally, 'reproduce' just means 'create the same thing again'.
Nix uses "reproducible" in a more general sense: you provide the same inputs, and you'll get a program which behaves the same way, regardless of whether you compiled from source or downloaded binaries from a cache.
IMO, I think "reproducible build" is enough to unambiguously refer to the former. But, if you can think of a nicer word for "you get the same behavior from the same inputs" than "reproducible", it would be worth suggesting.
These types of problems are very rare in NixOS (although I do occasionally see it with the module system, but at least this is config dependent, not system-state dependent). If I apply the same config I have a very high confidence that I will get the same system. I lost my desktop's drive the other day and I was back fully functional within an hour. Most of the time was spent logging into Firefox, Email and various websites rather than installing the system. Managing servers is similarly easy, I would have a hard time moving to something else.
Intrinsic state (like user data or application databases) is still hard, but at least that is the only real concern. Better than dealing with state and config.