In your example, if the mail() is disabled in the hsot xyz.com, there's no way sending mails from the host. That means suppose you have a certain forum script that uses the mail() function to authenticate users by sending email after registration. If you use Google SMTP relayer, you have to have a script that would use the relayer and again the script would be using the mail() function. (Please correct me if i am wrong with that fact). Thus we again come to the first position, where the mail() is not a matter for sending the email.

PS: as for my knowledge i dont know any other mean of using n exernal relayer within a script without using mail(), please correct me if I am wrong on that

What happens when host2 suddenly stops the mail function after understand it is being spammed?

That would cause an interruption but as i said in the Question "How do you handle the blacklisting of such free hosts?" it can be achieved by some various means which includes having a list of external mail domains or simply having one paid host and providing service to many. The provider can even take a small charge for the server so that there will be no loss for him.