In line 277 of DjVuImage.php, the code…
$txt = preg_replace( "/[\013\035\037]/", "", $txt );
…removes various control characters from the OCR text layer output from djvutxt output, including \035 (ASCII 0x1D, "GS", group separator) and \037 (ASCII 0x1F, "US", unit separator). (\036 (ASCII 0x1E, "RS", record separator is not used by DjVuLibre that I can tell).
These characters are the markers djvutxt uses to signal the presence of a paragraph break (or other OCR page area break), so removing them (ignoring them) leads to consecutive paragraphs or regions of text being smushed together instead of separated by a blank line.
The practical consequence of this is that proofreaders on the Wikisources have to manually identify all paragraph breaks in the source text by visually identifying them in the scanned page image, locating the equivalent point in the wikitext, and inserting an extra line break. Multiply this by 5–10 paragraphs per page, for several hundred pages per book, and even after just a few hundred books the amount of wasted manual effort for volunteers becomes relatively staggering (and English Wikisource alone currently hosts around a million proofread pages).
The code should therefore be replaced with something like…
$txt = preg_replace( "/[\013]/", "", $txt ); // Ignore carriage returns $txt = preg_replace( "/[\035\037]+/", "\n", $txt ); // Replace runs of OCR region separators with a single extra line break
…to instead insert an extra newline (i.e. Mediawiki's syntax equivalent to indicate a paragraph break) in that position.
And the good news is that, since retrieveMetaData(), as best I can tell, is called on-demand, this fix will retroactively apply to all not-previously-proofread pages of all DjVu files without needing a massive re-generate run as would be needed for image thumbnails or similar.