"programs.foo.enable = true" vs "systemPackages=[foo]" is confusing

Ah, great to know! This was not mentioned in the nixos manual section 6.1. Declarative Package Management.