Consider the surface given by the vector equation
$$\vec{r}(u,v)=(x_0+a_1 u+b_1v)\hat{i}+(x_0+a_2u+b_2v)\hat{j}+(z_0+a_3u+b_3v)\hat{k}\tag{1}$$
and the task of eliminating parameters $u$ and $v$ to obtain a Cartesian equation.
I think one way is to simply try to make substitutions.
This is what I tried in Maple
x := (u, v) -> x__0 + a__1*u + b__1*v
y := (u, v) -> y__0 + a__2*u + b__2*v
z := (u, v) -> z__0 + a__3*u + b__3*v
r := (u, v) -> <x(u, v), y(u, v), z(u, v)>
# Solve for u
solve(x(u, v) = x, u)
# Copy previous output and sub into equation for y(u,v), solve for v
solve(eval(y(u, v) = y, u = -(b__1*v - x + x__0)/a__1), v)
# Copy previous output and sub into previously found u
simplify(eval(-(b__1*v - x + x__0)/a__1, v = (a__1*y - a__1*y__0 - a__2*x + a__2*x__0)/(a__1*b__2 - a__2*b__1)))
# Sub in previous results for u and v into z(u,v)
simplify(eval(z(u, v) = z, {u = ((-y + y__0)*b__1 + b__2*(x - x__0))/(a__1*b__2 - a__2*b__1), v = (a__1*y - a__1*y__0 - a__2*x + a__2*x__0)/(a__1*b__2 - a__2*b__1)}))
The result of this isn't a pretty looking expression.
What I would like to do is have Maple simplify this expression by collecting terms that multiple $x-x_0$, $y-y_0$, and $z-z_0$. How do I do this?
Doing this with pen and paper gives the correct result, which is
$$(a_2b_3-a_3b_2)(x-x_0)+(a_3b_1-a_1b_3)(y-y_0)+(a_1b_2-a_2b_1)(z-z_0)=0$$
Is there a better way to solve this problem in Maple?
Is there a better way to solve the problem in general?

Since we are talking about polynomials:
the general idea is to determine a Gröbner basis of the type:
where the first polynomial of this basis is the desired one:
If then, as happens in Mathematica, there's a dedicated command, even better:
It's up to you to consult the Maple documentation for similar functions.