If the same GUID is not used within the same process, it is safe for the same GUID to be defined. But if, for example, you access them through COM, this is completely confusing.
If you use different interfaces with the same GUID in the same process, for example, separating the blocks of Delphi code, you may finally have problems. By convention, a unique GUID must define a unique signature (i.e., a Set of methods), so the code may think that this instance of the class implements all the methods of the interface, and this is not so. As a result, the internal execution search (IMT) tables will not match. When calling methods, you will get a lot of A / V.

Have a look at this very complete article to find out how interfaces work and what this internal IMT lookup table is for. The same GUID will mean the same IMT table, which will not be the case for you, so it just breaks at runtime.
source share