From a logical point of view, separate domains or co-existence of several apps in a single domain are similar (You can configure HTTP ports, etc.).
A main difference is that in one case you have one JVM running all the apps, and in the other case you have several JVMs. This can make a big difference. On one of our customer site, we initially deployed everything in one domain/JMV, but finally decided to split the deployment in several domains/JVM because it was giving better performance, especially garbage collection time. So yes, applications can interfere but in a very indirect way.
Also, JEE apps can't really be shutdown or started, so the domain is the smallest unit that you can power on and off. In some cases, it's handy.
Lastly, there are things that are per-domain, like app. server log levels, timer persistence, etc. If you want two apps with different settings for such things, you will need two domains.