Teddy,
I’m not aware of any documents touching this subject specifically; it depends quite a bit on your environment and what kind of load and traffic you’re expected.
Here are some good things to think about I’ve learned:
1- In many cases, it’s worth using separate hosts for separate projects – at least for orchestrations. it simplifies deployment a bit as well as sharing development machines.
2- In many cases, particularly when receiving a lot of documents, you’ll want to split the receive handlers into a host separate from the one doing the orchestration processing. You can also separate sending if that’s an issue. This gives you the benefit of easily configuring your biztalk group so that receiving and orchestration processing get separated in different physical servers
3- if you have many receive locations and/or orchestrations, particularly if you use the MSMQ[T] and SOAP adapters, split them into separate hosts. Otherwise, you can run out of threads in the biztalk thread pools for processing (even if you follow the KB articles on this to increase the limit).
4- If you have receive/send operations that handle very large files (particularly with transformations), you might want to split them into a separate host as well, as that will reduce memory pressure and give it a little bit more room to help reduce Out Of Memory errors when receiving many messages concurrently (there are things in BTS06 that can help with this as well).