I'm also trying to work this one out.
It looks like ACDGuid is dynamically generated when the object is placed in the world, whereas ActorSNO is static.
I came to this conclusion (dynamically generated), because wherever I have seen ACDGuid used, people are having to store all of them, then search through them to find the exact one they need.
It looks like to be able to interact with certain objects (e.g. portals) you have to use the ACDGuid, not the ActorSNO.... damn and fiddle sticks, lol
Examples of this can be found in GilesSmith's Trinity and a query made by XSOL for his [Plugin] MyBuddy.Local a.k.a Follow Me.
xsol's query -
http://www.thebuddyforum.com/demonbuddy-forum/developers/65435-actors-actor-visible.html
I'll test this further tomorrow, and if proven to be true (dynamically generated IDs), I'll have to come up with a way to store these and locate what I want easily (minimise processing).
-------------------------------
I'm thinking out loud in typing form here......
I guess the ACDGuid is part of a list of objects in the game world, a dynamically generated list, for perhaps as an easy means to deal with the objects in the world.
When we write an instruction in the Profile to interact with an object e.g.
PHP:
<UseObject questId="1" x="2400.494" y="2451.034" z="27.1" actorId="176003" isPortal="True" destinationWorldId="161961" />
The actorid (ActorSNO) is then used to locate the object's ACDGuid, and as a consequence the object itself in the actual world.
*** WARNING ***
This is total conjecture on my part!
*** WARNING ***