Could this be a bug ?
With a code like below
FActorSpawnParameters p;
p.bNoCollisionFail = true;
p.bNoFail = true;
p.Instigator = Controller->GetPawn();
ADerivedFromPawn* SomePawn = World->SpawnActor<ADerivedFromPawn>( ADerivedFromPawn::StaticClass, p );
Afterward, SomePawn->Instigator is always equal to SomePawn, not Controller->GetPawn()
After looking into the source code, the function APawn::PreInitializeComponents overwrite Instigator to this.
Totally ignoring the Instigator set earlier at AActor::PostSpawnInitialize.