My current workaround is to use a persistent property to mark procedurally placed entities (my custom actor) as proc-gen placed and use this to validate and restore the transient flag in an AActor::OnConstruction override.
//verify transient status
if(bWasProcedurallyPlaced)
{
if(HasAnyFlags( RF_Transactional ) || !HasAllFlags( RF_Transient | RF_DuplicateTransient ))
{
//has lost it's transient status, force back
UE_LOG( LogXXX, Warning, TEXT( "Restoring transient status of entity that has lost it: %s" ), *GetName() );
ClearFlags( RF_Transactional );
SetFlags( RF_Transient | RF_DuplicateTransient );
}
}