Tested with Emacs 28 and a recent Emacs 29 build.

To reproduce:

    $ emacs --batch --eval "(princ (with-temp-buffer (insert \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua...\n\") (set-mark 1) (fill-paragraph nil t) (buffer-string)) 'external-debugging-output)"

Prints the text in one line, i.e. `fill-paragraph' appears to have done nothing.

If you replace `--batch' in the command line with `-Q' without changing anything else:

    $ emacs -Q --eval "(princ (with-temp-buffer (insert \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua...\n\") (set-mark 1) (fill-paragraph nil t) (buffer-string)) 'external-debugging-output)"

the output in the console becomes formatted in two lines, i.e. `fill-paragraph' does its work.

In both cases the code is exactly the same and the function is called non-interactively. The only difference, as far as I see, is the batch mode.

Paul