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