It looks like that “new odoc model” mentionned in Appendix A has since been released, in v1.5.2.
The necessity for this nonsense is part of the reason I gave up OCaml for F#/C# and then, eventually, Rust. You could define and maintain this .mli file format, you could add include to the language and come up with this neat workaround… or you could just have some export annotations in the source and make the compiler use the information it has anyway without you having to tell it all over again. Having header files is a very 1980’s design decision.
I find it a rather minor inconvenience compared to what the language offers.