それぞれ共通点もありますが、異なる部分もあるという感じです。
ご自身の目的によっては、どれで実行しても同じという場合はあるかと思います。
fit - 与えたモデルに合わせて、関数がフィッティングされます。非線形なモデルでしたら裏では lsqcurvefit (最適化問題) が走ると思います。解に制約条件とかは付けられないです。線形モデルなら、解析解が得られるのでバシッと直ぐに決まったり、そういう知識が無い人はとりあえず使えば動くという感じです。
lsqcurvefit - これは最小二乗法を最適化問題として解きます。非線形の最適化アルゴリズムが動作するため、任意のモデルをフィッティングさせることができます。(収束するかは別の話)。最適化問題を設定するので、一番自由度が高い方法かなと思います。最適化のアルゴリズムにも自由度が有ります。
fitnlm は nlinfit の新しいバージョンです。色々拡張されていて、新しい方を使うと良いと思います。例えば、データ欠損が有っても適当に計算を進めてくれたり、最適化の初期値も適当に指定してくれたりします。分散共分散行列を計算してくれるというのもメリットです。どちらも同じアルゴリズムを使っていて、Levenberg-Marquardt 法ですね。一般的に非線形の最適化問題に用いられる手法です。