fzf won't work in shell-mode as it does not handle curses-like apps. Thus, `ezf.el' avoids that problem by using Emacs as the fuzzy searching facility. To say nothing of the fact that this is a fine example to re-use for, similar, needs where you need to receive and send back information in an ordered manner.
(And helm is far more advanced than fzf is, as far as searching)