Na verdade, o armazenamento em buffer no UNIX depende do contexto: quando o stdout é redirecionado para algo interativo como um console - geralmente é um buffer de linha, caso contrário, ele é totalmente armazenado em buffer.
O buffer pode ser alterado dentro do aplicativo usando setvbuf chamada de biblioteca.
Mas também pode ser feito com o comando stdbuf no lançamento:
ExecStart=/usr/bin/stdbuf -oL /opt/foo/.cabal-sandbox/bin/foo
(para o caso de buffer de linha)