It seems like each of these would run
monerod in the background. How does the behavior differ? Under what circumstances might one choose
--non-interactive or vice versa?
--detach will run the daemon in the background.
--non-interactive will run in the foreground but the daemon will not require a Terminal for input.
Quoting from monerodocs monerod reference:
Go to background (decouple from the terminal). This is useful for long-running / server scenarios. Typically, you will also want to manage monerod daemon with systemd or similar. By default monerod runs in a foreground.
Do not require tty in a foreground mode. Helpful when running in a container. By default monerod runs in a foreground and opens stdin for reading. This breaks containerization because no tty gets assigned and monerod process crashes. You can make it run in a background with --detach but this is inconvenient in a containerized environment because the canonical usage is that the container waits on the main process to exist (forking makes things more complicated).