Virtual hosts is something built into the HTTP protocol (since HTTP version 1.1).
As you probably know, virtual hosts allow the HTTP server to redirect different requests on the same IP and port to different directories or web applications. Your browser actually sends the name of the website it is trying to connect to along with the request for a document.
Most internet protocols don't work this way. Usually a separate IP address or port number is required if you want to serve up something different. Also, usually the server expects you know it's name, since you just connected to it.
Therefore, the FTP protocol doesn't support virtual hosts, because FTP clients don't explicitly tell the server which site they were trying to access. It may come as a surprise, but the SSL protocol used in HTTPS doesn't support virtual hosts either - you need a separate IP address (or port) for each different SSL certificate you install.