Docker kind of always had a USER command to run a process as a specific user, but in general a lot of things had to run as ROOT.
USER
I have see
Advantage of using gosu is also signal handling. You may trap for instance SIGHUP for reloading the process as you would normally achieve via systemctl reload or such.
gosu
trap
SIGHUP
systemctl reload