It doesn't address multilib. For example, the -devel packages
should
require ocaml of the _same_ architecture, not just "ocaml".
In particular, the example that "ocaml-pcre-devel needs an explicit
'Requires: pcre-devel'" is wrong, because an i386 pcre-devel package
would satisfy that, while not being particularly useful for an x86_64
ocaml-pcre-devel.

Right -- I now understand the problem. See for example my email here:
https://www.redhat.com/archives/fedora-packaging/2008-March/msg00105.html
What I _don't_ understand is how to fix this ... Obviously bug 235755
("rpm doesn't allow 'Requires: foo.%{ARCH}'") would be an ideal
fix.
In the absence of that can someone suggest a workable scheme?
I can add file deps, I think, to solve this:
In ocaml-pcre-devel:
Requires: %{_libdir}/ocaml/pcre/ (get the right ocaml-pcre)
Requires: %{_libdir}/libpcre.a (instead of pcre-devel)
would seem to fix this, at the cost of downloading the filelists.