Возьмем за основу метод2
изменим сигнатуру
public static void Move(this Transform transform, Vector3 target, float time, AnimationCurve curve = null)
и изменим использование curve следующим образом
transform.position = Vector3.Lerp(start, target, curve != null ? curve.Evaluate(deltaTime) : deltaTime);
Или создать две перегрузки, как предлагает
insighter
Плюсы - меньше кода, меньше можно накосячить.
Минусы - в случае с дефолтным параметром ситуация когда curve == null из-за ошибки и когда так задумано ничем не отличается. При перегрузке тоже правда будет использоваться некий дефолтный параметр.