I will add the following for completeness. If you read the The Numerical Method of Lines Tutorial, it shows you how you can roll your own discretization scheme using NDSolve`FiniteDifferenceDerivative to accomplish what you need.
Use equations 19.1-12 and 19.1-13 from BSL to reduce
$\mathbf{v}^*=f(t\ only)$ as shown:
$$\frac{{\partial c}}{{\partial t}} = - \left( {\nabla \cdot c{\mathbf{v}^*}} \right) + \sum\limits_{\alpha = 1}^N {{R_\alpha }} \qquad (19.1-12) $$
$$ \left( {\nabla \cdot {\mathbf{v}^*}} \right) =\frac{1}{c} \sum\limits_{\alpha = 1}^N {{R_\alpha }} \qquad (19.1-13) $$
$$\left( {\nabla \cdot {{\mathbf{v}}^*}} \right) = 0$$
Since the divergence of
$\mathbf{v}^*$ is zero and this is a 1-d problem it means this value is a constant with respect to
$z$. Equation (19.1-17) simplifies to the boxed form for a non-reactive system.
$$c\left( {\frac{{\partial {x_\alpha }}}{{\partial t}} + \left( {{{\mathbf{v}}^*} \cdot \nabla {x_\alpha }} \right)} \right) = c{\mathcal{D}_{AB}}{\nabla ^2}{x_A} + \left( {{x_B}{R_A} - {x_A}{R_B}} \right) \qquad (19.1-17) $$
$$\boxed{\left( {\frac{{\partial {x_\alpha }}}{{\partial t}} + \left( {{{\mathbf{v}}^*} \cdot \nabla {x_\alpha }} \right)} \right) = {\mathcal{D}_{AB}}{\nabla ^2}{x_A}}$$
Now, we need to solve for
$\mathbf{v}^*$, which is defined by
$$\mathbf{v}^*=\frac{N_A+N_B}{c}$$
Since
$\frac{N_A+N_B}{c}$ does not depend on
$z$, we choose the interface condition where
$N_B$ equals 0 similar to the situation of steady-state and we obtain the same relation for
$N_A$.
$$N_{A z}=-\frac{c \mathcal{D}_{A B}}{1-x_A}\frac{\partial x_A}{\partial z}$$
By rolling our own scheme, we have access to the derivative at the boundary. The following shows the Mathematica implementation and evaluation of the boxed equation evaluated up to
$\frac{1}{4}$ length.
molMod[x_, ramp_, tmax_] :=
Module[{n, h , sf, U, bc0, bc0d , bc1, bc1d, delconc, laplacianconc,
vstar, eqns, ics, system, lines, f, xsat, m},
n = 50; Subscript[h, n] = 1/n; sf = 1;
xsat = Rationalize[x];
m = Rationalize[ramp];
U[t_] = Table[Subscript[u, i][t], {i, 0, n}];
bc0 = Subscript[u, 0][t] == xsat (1 - Exp[-m t]);
bc0d = Map[D[#, t] + sf # &, bc0];
bc1 = Subscript[u, n][t] == 0;
bc1d = Map[D[#, t] + sf # &, bc1];
delconc =
NDSolve`FiniteDifferenceDerivative[1, Subscript[h, n] Range[0, n],
U[t]];
laplacianconc =
NDSolve`FiniteDifferenceDerivative[2, Subscript[h, n] Range[0, n],
U[t]];
vstar = -1/(1 - Subscript[u, 0][t]) delconc[[1]];
eqns = Thread[D[U[t], t] + vstar delconc - laplacianconc == 0];
eqns[[1]] = bc0d;
eqns[[-1]] = bc1d;
ics = Thread[U[0] == Table[0, {n + 1}]];
system = Join[eqns, ics];
lines = NDSolve[system, U[t], {t, 0, 1}];
f = Interpolation[
Flatten[Table[{{t, i Subscript[h, n]},
First[Subscript[u, i][t] /. lines]}, {i, 0, n}, {t, 0, tmax,
tmax/500}], 1], InterpolationOrder -> 2];
f]
f75 = molMod[0.75, 20000, 0.01];
f50 = molMod[0.5, 20000, 0.01];
f25 = molMod[0.25, 20000, 0.01];
inv[f_, s_] := Function[{t}, s /. FindRoot[f - t, {s, 1}]]
xa0[phi_] := 1/(1 + 1/(Sqrt[Pi] (1 + Erf[phi]) phi Exp[phi^2]))
phiinv = inv[xa0[phi], phi];
bigX[Z_, x_] := (1 - Erf[Z - phiinv[x]])/(1 + Erf[phiinv[x]])
frame[legend_] :=
Framed[legend, FrameStyle -> Red, RoundingRadius -> 10,
FrameMargins -> 0, Background -> Lighter[LightYellow, 0.25]]
legend = LineLegend[
Automatic, {"3/4 \[Infinity]", "3/4", "1/2 \[Infinity]", "1/2",
"1/4 \[Infinity]", "1/4", "0 \[Infinity]"},
LegendFunction -> frame];
Plot[{bigX[z, 0.75],
Callout[f75[1/256, 2 Sqrt[1/256] z]/0.75, "3/4", 1,
CalloutMarker -> "CirclePoint"], bigX[z, 0.5],
Callout[f50[1/256, 2 Sqrt[1/256] z]/0.5, "1/2", 0.9,
CalloutMarker -> "CirclePoint"], bigX[z, 0.25],
Callout[f25[1/256, 2 Sqrt[1/256] z]/0.25, "1/4", 0.8,
CalloutMarker -> "CirclePoint"], bigX[z, 0]}, {z, 0, 2},
PlotRange -> {0, 1}, GridLines -> Automatic,
Filling -> {{1 -> {2}}, {3 -> {4}}, {5 -> {6}}},
PlotStyle -> {Dashed, Thick, Dashed, Thick, Dashed, Thick, Dashed},
ImageSize -> Large, Frame -> True,
FrameLabel -> {Style["Z", 18], Style["X", 18],
Style[StringForm["Dimensionless Concentration Profiles"], 18]},
PlotLegends -> Placed[legend, {Right, Center}]]

Very tight agreement with the semi-infinite case. The following plot shows how different the new custom formulation (dashed lines) is versus my initial quick and dirty model (solid lines).

There looks to be about a 10% error that exists at dimensionless time scales between 0.05-0.15. In the end, one needs to operate within the constraints of the currently available solver.
Mathematica 11.3 has the capability to solve this case, but you probably will need to do a deep dive into the MOL tutorial and start with a different form of the balance equation.