GP ではカーネルがモデルの細かさを決めるので、このあたりを調整すると過学習を抑制することができると思います。CV で最適なパラメータを見つけると良いと思います。
回帰学習機アプリ の中では、このようなハイパーパラメータの最適化も行ってくれるので、コードを書いても良いですがアプリから実行すると簡単かと思います。
質問2つ目の、「どこで過学習対策をしているか」ですが
rng("default")
Mdl = fitrgp(trainData,"SOC", ...
OptimizeHyperparameters=["BasisFunction","KernelFunction","Standardize"], ...
HyperparameterOptimizationOptions= ...
struct(AcquisitionFunctionName="expected-improvement-plus",UseParallel=true))
この中で、ハイパーパラメータの最適化をしていますね。基底の関数、カーネル関数、データの標準化の有無。GP ではカーネルパラメータに相当するノイズの分散はデータから推定されます。