I think it may become dedicated in the function `minibuffer-completion-help'
in `minibuffer.el'. Notice the local binding of the variable
display-buffer-mark-dedicated'. From the documentation of the variable:
If non-nil, `display-buffer' marks the windows it creates as dedicated.
`display-buffer' itself is called from the `with-output-to-temp-buffer' C
function (at least that is what `with-output-...'s docs suggest).
Unfortunately as for intent/reason behind this behavior, I don't have
a clue.
This is so as to know whether to delete the window when the *Completions*
buffer is hidden/buried.
Maybe we should use another approach (hi Martin ;-). E.g. just add
a flag "created for *Completions*" when we create the window, that would
work similarly to `dedicated' w.r.t bury-buffer but which would not
prevent display-buffer from reusing that window for some other buffer.