Why Calculate world position in fragment shader instead of vertex shader?

I am new to UE4 and I found some confusing things when reading those shaders. I found that when I need world position to do some calculation in a fragment shader, UE would probably use function float3 SvPositionToResolvedTranslatedWorld(float4 SvPosition) to get world position by using SvPosition. But why not get world position in the vertex shader, and interpolating it to the fragment shader?(by passing it in TEXCOORD#) Besides, calculating in the vertex shader will get better performance, isn’t it?

// Used for vertex factory shaders which need to use the resolved view
float3 SvPositionToResolvedTranslatedWorld(float4 SvPosition)
{
	float4 HomWorldPos = mul(float4(SvPosition.xyz, 1), ResolvedView.SVPositionToTranslatedWorld);

	return HomWorldPos.xyz / HomWorldPos.w;
}