To achieve zero downtime for sitecore websites, a commonly recommended "best-practice" approach is to have two sitecore Content Delivery (CD) servers and a load balancer in front, and then a separate CM server for content management. This approach also works perfectly for your multisite scenario because all 3 sites are served from both CD servers (one app pool in each, with all site bindings). Any deployment can be done by taking one CD server offline (removed from load balancer) at a time, updating the code, then bringing online and repeating this for the other server, always having one CD server online and resulting in zero downtime.
Note that sitecore licensing typically requires that you have a license per instance (and different app pools also count as separate instances, so contact sitecore to discuss your licensing requirements).
The examples you suggested are not best practice, but could be considered to reduce costs. You could have 3 separate app pools serving separate sitecore CD instances (each its own website folder on disk with a full copy of the website files/binaries), the only difference would need to be a unique config "Analytics.ClusterName" setting. This means you don't need extra infrastructure, but this will share the resources of the server and possibly result in slower performance, and still need to be licensed as separate instances. Then the site bindings in IIS for each country's website can each be binded to one app pool.
Note that you should use the sitecore standard single instance (combined CM/CD) configuration for multiple instances. They should be configured as CD instances, so that they don't all do the same processing jobs that will conflict with each other and result in a broken application!