System.Object represents a managed object within a process. ICorDebugValue is the debugger's representation of a System.Object within the debuggee process.
The key here is that the debugger and debuggee processes are ideally fully isolated from each other. For example
Some common questions: