1) Internal functionalities try not to use advises. 2) The branch is not actually more complex, it just generates the formatted vertical output form the beginning. 3) It does more or less the same you are doing but with a simpler config:
(icomplete-mode t) (icomplete-format 'vertical)
4) We add arrow bindings to move 5) Add completion matching faces is also coming.
Some feedback about branch : feature/icomplete-vertical