but to my surprise running 'tail -f /tmp/xmonad-fifo' shows no
output, while if I simply start xmonad in a terminal I can see it
printing information about the workspaces being used to the terminal:
At a guess, you've just demonstrated that nobody has been using dynamicLogXinerama. It isn't flushing its output, and I can't find anywhere where xmonad sets its stdout to unbuffered or line buffered output. Output to a terminal is automatically line buffered, so in that case it works as expected; block buffering means it'd only get flushed to the FIFO every 4Kbytes or so.
You could try importing System.IO and adding
hSetBuffering stdout LineBuffering
to the startupHook.
--