I agree that there are advantages to having the bindings out of tree. There are also advantages to having them in the tree though. I have seen more cases of a test failing when something is changed in the LLVM C API, leading the patch author to fix the ocaml bindings. I don’t know the optimal way, just noting that there are advantages both ways.
Currently, the blocker to having the opam file in the upstream trunk is the patches in the opam package that are applied to adjust the build system. If the differences between the upstream build scripts and the opam package could be eliminated, and if the opam file could be placed in the ocaml bindings directory (not at the root of the repo), then I do not think that there would be problems adding the opam file upstream.
Please feel free to add me as a reviewer to any changes sent upstream.