If different applications in a single instance (or sub-applications within a single application) are stepping on each other, then setting up a second instance can be an effective way of dealing with the situatuation. You could limit CPU with processor affinity or WSRM, and memory can be allocated based on need and prority. While resource governor could also be used, it is sometimes hard to track down ALL of the processes that could be problematic, and it only takes one that got away to make your life difficult.
Availability is a two edged sword. If there is a problem that causes one instance to be recycled frequently, it's nice to have part of the user population not affected. OTOH, if a cluster reboot is required, i.e. bacause Microsoft says so after you have opened a PSS incident, the other users might be upset if the problem hadn't impacted them. Having supported shared clusters for about a decade, I have heard 'why do we have to suffer an outage because of them?' more times than I care to remember.