Good question. That's no best practice since it really depends on your application. One thing to consider is that you often have RAM cache overhead, so to have a site on 4 servers may duplicate the in-memory cache 4 times. So if it's not needed on all 4 nodes, just put it on 2 for redundancy.
Also, if you have problem sites with unpredictable CPU or RAM or disk IO, you may want to isolate it to its own mini-farm. There's no right or wrong on this.
What I like to do in some cases is create a webfarm that has the entire config for multiple sites, but only have some active on each node. With your example, you could put all 200 apps on all 4 servers, keeping the config in sync with shared config. Then using your load balancer (may I suggest ARR), have each app active on 1 or 2 nodes at a time. That keeps the total memory requirements lower while giving you flexibility to take nodes in and out at will, or spin a site up on more nodes on short notice. You can even keep the 4th node as an option for the problem sites.
Disk space is another consideration. If you're using local disks for your content, you'll need to handle the content for all 200 apps on all 4 servers.
Whatever you do, be deliberate about it and make sure that it's manageable.