No, they don't just check whether a port is open and assume that the port is being listened to by the "usual" application. When they connect they'll be given a response from the FTP server. FTP, HTTP, telnet, all those things can be connected in the same way, by text (for the initial connection). If you telnet to an FTP server on the right port, you get a prompt from the FTP server, because it doesn't know you're not using an FTP client. Technically, you could begin file transfers right then, if you could capture the binary data coming from the server; that's all an FTP client really does.
220 home.covad.net FTP Server ready.
Also, Yahoo Messenger doesn't just "listen" on whatever port it uses. It maintains an open connection to the server. The port can't be simply connected to by anything because the application isn't expecting a connection from anything but the server, so it won't respond, giving no indication of what is running. If they find the port open (by port scanning they see ports which are accepting connections, not ports that are actively connected) they just try to connect and see if it responds. Your FTP server would respond then.