Hi,
especially fiber connections can cause loops during unidirectional conditions; we normally prefer UDLD to prevent this from happening because it works independantly from the STP port state/role (directly on link-layer), but LoopGuard could also detect such conditions on non-designated ports.
But in addition LoopGuard can also detect situations in which a neighbor switch does not send BPDUs due to misconfiguration, high CPU load (STP is a software process), implementation errors, etc.
So both features/enhancements have their own reason for existence.
HTH
Rolf