Setting ivy-use-virtual-buffers causes an void-variable error because ido-use-faces is unknown. One has to require ido in order to use this feature which doesn't seem sensible. AFAICS, ivy uses just this single variable and the ido-virtual face. Well, then it can define an ivy-use-faces variable and an ivy-virtual-buffer face itself, I guess.
ivy.el (ivy-virtual): New defface
* ivy.el (ivy--virtual-buffers): Use `ivy-virtual'.
No need for `ido-use-faces' approach, the user can just customize
`ivy-virtual' to look like `default' if needed.