uprojectのAdditionalDependenciesとBuild.csのPublicDependencyModuleNamesの違いについて

モジュールに対して依存モジュールを指定する方法に関しまして、調べましたところ以下の2種類が存在するように見受けられます。

  • Hoge.uprojectのModulesのAdditionalDependencies
  • Hoge.Build.csのPublic(Private)DependencyModuleNames.AddRange()

どういった違いがありますでしょうか?
また、どちらを使うのが良い等あれば教えていただけますと幸いです。

調べてみたところ、下記のドキュメントは見つかったのですが、違いについての記載されているものは見つかりませんでした。

下記は依存モジュールの指定方法に関しての検証です。

新規でUe4DepandencySampleというプロジェクトを作成しています。
Ue4DependencySampleというモジュールが新規で作成され、下記のようなuprojectとBuild.csが自動生成されました。

自動生成されたUe4DependencySample/Ue4DependencySample.uproject

{
	"FileVersion": 3,
	"EngineAssociation": "4.27",
	"Category": "",
	"Description": "",
	"Modules": [
		{
			"Name": "Ue4DependencySample",
			"Type": "Runtime",
			"LoadingPhase": "Default"
		}
	]
}

自動生成されたUe4DependencySample/Source/Ue4DependencySample/Ue4DependencySample.Build.cs

using UnrealBuildTool;

public class Ue4DependencySample : ModuleRules
{
	public Ue4DependencySample(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
	
		PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });

		PrivateDependencyModuleNames.AddRange(new string[] {  });
	}
}

試しに下記のようにBuild.csのPublicDependencyModuleNames.AddRange(new string[] { })から依存モジュールを消し、依存モジュールをuprojectのModulesのAdditionalDependenciesに追加してビルドしました。
無事ビルドが通り、エディタ起動も問題なく行えました。

修正後のUe4DependencySample/Ue4DependencySample.uproject

{
	"FileVersion": 3,
	"EngineAssociation": "4.27",
	"Category": "",
	"Description": "",
	"Modules": [
		{
			"Name": "Ue4DependencySample",
			"Type": "Runtime",
			"LoadingPhase": "Default",
			"AdditionalDependencies": [
				"Core",
				"CoreUObject",
				"Engine",
				"InputCore"
			]
		}
	]
}

修正後のUe4DependencySample/Source\Ue4DependencySample/Ue4DependencySample.Build.cs

using UnrealBuildTool;

public class Ue4DependencySample : ModuleRules
{
	public Ue4DependencySample(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
	
		PublicDependencyModuleNames.AddRange(new string[] {  });

		PrivateDependencyModuleNames.AddRange(new string[] {  });
	}
}