Compare word by word, character by character this, which you claim works,
model5[k2_?NumericQ, k3_?NumericQ, S0_?NumericQ] :=
(model5[k2, k3, k4, S0] = P[10] /. First[NDSolve[{
Eu'[t] == k2 ES[t] + k3 ES[t] - k1 Eu[t] S[t] - k4 Eu[t],
ES'[t] == k1 Eu[t] S[t] - ES[t] (k2 + k3),
E2'[t] == k4 Eu[t], S'[t] == k2 ES[t] - k1 Eu[t] S[t], P'[t] == k3 ES[t],
S[0] == S0, Eu[0] == Et, ES[0] == 0, E2[0] == 0, P[0] == 0},
{Eu, ES, E2, S, P}, {t, 0, 60}]]);
fit = NonlinearModelFit[data, model5[k2, k3, S0],
{{k2, 4000}, {k3, 100}},
S0]
with this, which you claim does not work
Model3[Vmax_?NumericQ, Km_?NumericQ, Fuc_?NumericQ, Pdiff_?NumericQ, Cb0_?NumericQ, te_] :=
(Model3[Vmax, Km, Fuc, Pdiff, Cb0, te] = Ca[te] /. First[NDSolve[{
Ca'[t] == ((Vmax Cb[t])/(Km + Cb[t]) - Pdiff Fuc Ca[t] + Pdiff Cb[t])/Va,
Cb'[t] == (Pdiff Fuc Ca[t] - Pdiff Cb[t] - (Vmax Cb[t])/(Km + Cb[t]))/Vb,
Ca[0] == 0, Cb[0] == Cb0 },
{Ca, Cb}, {t, 0, 50}]]);
fit1 = NonlinearModelFit[Dataimp, {Model3[Vmax, Km, Fuc, Pdiff, Cb0, te]},
{{Vmax, 0.001119}, {Km, 15}, {Fuc, 0.1}, {Pdiff, 0.000000345}}, {Cb0, te},
Weights -> (1/#3 &)]
What is different? Is it absolutely necessary that it be different?
Why is Cb0 and te written differently than P? Why is Ca written differently than P? Are there other differences? That can be made the same?