Smoke Domains Overlapping?
The Problem

Your problem is that you are currently determining material transparency with Z Transparency. This doesn't work, since Z Transparency calculates the alpha per-face. When your domains intersect, it doesn't recalculate the alpha. 

If the Domains Move or Change Size/Shape

Change the Transparency method to Raytrace:



This will slow down your render a little bit, since it is calculating the transparency per pixel instead of per face, but it isn't too significant and definitely produces a cleaner render:



If the Domains Do Not Move

If your domains are static, instead of using the Raytrace method, you can fix this by cutting an outline at the intersecting parts of your domain (easier shown than said):



This way, the faces of the domain inside the other domain are calculated separately from the faces outside the other domain.