We have a library using per_module in the preprocess part. It seems that dune generates an incorrect .merlin file as soon as per_module is used. It doesn't include the FLG -ppx ... line.
An easy way to reproduce (with dune 1.10 at least) is to create a library with a single file and this dune file:
(library
(name demo)
(preprocess (per_module ((pps lwt_ppx ppx_expect) demo))))