Behaviour observed on the 4.14, 5.0, 5.1 (except ocamldoc was fine) and trunk branches as of today:
$ ./configure && make -j10
[...]
../../ocamlopt.opt -nostdlib -I ../../stdlib -I ../../otherlibs/unix -linkall -a -cclib -lthreadsnat -o threads.cmxa thread.cmx event.cmx
[...]
./boot/ocamlrun ./ocamlopt -nostdlib -I ./stdlib -I otherlibs/dynlink -g -strict-sequence -principal -absname -w +a-4-9-40-41-42-44-45-48 -warn-error +a -bin-annot -strict-formats -I ocamldoc -I utils -I parsing -I typing -I bytecomp -I file_formats -I lambda -I middle_end -I middle_end/closure -I middle_end/flambda -I middle_end/flambda/base_types -I asmcomp -I driver -I toplevel -I tools -I runtime -I otherlibs/dynlink -I otherlibs/str -I otherlibs/systhreads -I otherlibs/unix -I otherlibs/runtime_events -c ocamldoc/odoc_config.ml
On slow computers (such as when using an emulator), the difference between using ./boot/ocamlrun ./ocamlopt and ../../ocamlopt.opt is significant enough to be noticable.