See the question and my original answer on StackOverflow

One big difference I see: with CodeDom, each time you compile some C# or VB.NET, it happens out of process. CSC.exe or VBC.exe are the real workers behind the scene.

If you want to build a service, in terms of architecture, scalability, isolation, etc. (you mention Azure), this is not very good.

With Roslyn it's in process.

I suppose this is one of the reason they call it "Compiler as a service".

Also, CodeDom is a relatively poor API, misses a lot of features, and is not really up to date, as it was designed mostly to support Visual Studio UI designers automatic code generation. I think Roslyn will do much better as it's written by the guys who write the compilers. I hope that will make the difference.

PS: One notable difference from CSC.exe and VBC.exe: Roslyn seems to be pure .NET (and uses CCI).