The main reason is that I find it easier to manage code in an external file, specially with vi over an SSH connection or running the device on a separate machine. It could also make multi-threading easier (though as Bulek said above, there have been examples of multi-threaded code in GSD).
What I am lacking at the moment is a clear view on how to access device data via the DCE. I have set it up so far via SQL queries, which is breaking away from the client/server model.
In another thread http://forum.linuxmce.org/index.php?topic=6899.msg42888#msg42888, Hari suggested to have a look at the general plugin, which I didn't have time to do yet.
My goal is remote control of lmce via IM btw.