[UPDATE] The issue is reported to be fixed in Emacs 29 trunk.
I had this question myself and your post had stimulated me to finally research how to do it.
Here's the current solution (or rather a fix, because this behavior of the *Ido Completions* buffer looks like a bug to me) tested on Emacs 28.0.50:
(customize-set-variable 'display-buffer-alist '(("\\*Ido Completions\\*" (display-buffer-reuse-window display-buffer-at-bottom) (window-height . fit-window-to-buffer))))
Additionally, try out 'one-column output:
(setq completions-format 'one-column) ; or 'vertical / 'horizontal
Documentation on display-buffer-alist.
P.S. I probably should have also mentioned that typing C-f (after C-x C-f calling ido-find-file) allows to fallback to non-ido find-file with the currently more standard completions buffer behavior. C-h f ido-magic-forward-char lists all C-f initiated "magic actions".