Not sure why in the first place `isearch-complete1' uses some custom
auto-completion implementation that is different from a conventional
solution, perhaps historical reasons. Thus, I believe that reusing either
`completion-at-point' or `completion-in-region' to implement that
functionality is much better in the long run. This would also allow
packages, which customize completion behavior, to hook into `isearch'
auto-completion as well. See also [1] for example.
[1] https://github.com/abo-abo/swiper/issues/1882
Indeed, Isearch uses custom completion for historical reasons,
and there is no reason for this anymore.
But there is one thing I don't understand: how packages prefer to hook
into auto-completion? Is it enough to convert `isearch-complete1' to
just `completing-read' in the minibuffer activated by `isearch-edit-string'?