There isn't a best practice per se, but there are some considerations; some of which you've already thought of, such as traffic. The other considerations are CPU and RAM usage from the resulting traffic to these sites. Generally I like to separate sites on their own Application Pools if at all possible. But in your case you've got 600+ sites, you'll likely end up sharing some pools. The downside of this is that if you have to do maintenance on one site and it requires any sort of recycling or stopping and/or editing of the pools then you'll affect all sites sharing that pool. What I'd do is find a way to break them all down to a group of pools based on traffic and then go from there. Low, Medium, and Large traffic if you can. I'd first recommend reading this.
There's no rule or policy stating that you have to have 1 site per pool for best performance, however, the more separation the better.