For example, maybe you don't want the process to be able to easily detect that it has had its access reduced, by simulating a full-access environment.
Or for example, maybe you don't care about access at all and you just want to avoid conflicts between two processes by giving them separated namespaces for their data.
It's useful for other reasons. On OpenBSD, a full web browser compromise does not lead to full file system access.
I'm not sure what pieces of software populate directories and then chroot into them aside from maybe some build systems? But those likely create or bind in some /dev and /proc pieces which would be privileged operations anyway. And in such a case would containers not have surplanted chroot?
Chroot is itself sometimes used to provide container-style functionality, so I think it's wrong to say containers "surplanted" it.
Containers use chroot