UActorComponent::BeginDestroy() calls OnComponentDestroyed() before it calls OnUnregister() (via ExecuteUnregisterEvents()), but UActorComponent::DestroyComponent() calls OnUnregister() (via UnregisterComponent()->ExecuteUnregisterEvents()) before it calls OnComponentDestroyed(). This inconsistency seems like a bug, granted that few if any component classes currently implement OnComponentDestroyed().
I’m still working in the 4.4.2 branch but I took a peek at Master just now and this still applies there.