There's no reason to dispose of the engine. R is an unmanaged application written in C. Disposing is a managed .Net concept and has no effect on unmanaged dlls, like R and its subordinate dlls. Calling Dispose on the REngine is good form, but it won't allow you to get a new instance of the REngine, which is why the dispose check is there in the first place.
I'm not certain what criteria you are using when you say it works from a console or Windows application as this behavior is part of interop and unmanaged application under .Net. Using WCF as an IPC mechanism for hosting R and R.Net will not change things.
I'm not certain what criteria you are using when you say it works from a console or Windows application as this behavior is part of interop and unmanaged application under .Net. Using WCF as an IPC mechanism for hosting R and R.Net will not change things.