The following is a function SymbolicRR that makes row reduction more compatible with symbolic algebra.
Author: Corbett Redden (corbett.redden@liu.edu)

SymbolicRR[matrix_, symbols_:{}] := FixedPoint[Function[mtrx, Simplify[RowReduce[mtrx, ZeroTest -> ( Apply[Or, Table[!FreeQ[#, symb], {symb, symbols}]]  || PossibleZeroQ[#]&)]]],matrix, 10]

SymbolicRR::usage="SymbolicRR[matrix, {(Subscript[var, 1]), (Subscript[var, 2]), ...}] row reduces a matrix without assuming expressions involving variables are non-zero.";

In ordinary RowReduce, Mathematica will implicitly assume all expressions involving variables are invertible.  While we get the “desired answer” in this first case, ...

RowReduce[(({{1, 1, 3, x}, {2, 0, 2, y}, {1, 1, 5, z}}))] // MatrixForm

... in this next case RowReduce assumes that x+y-z is invertible.

RowReduce[(({{1, 1, 3, x}, {2, 0, 2, y}, {3, 1, 5, z}}))] // MatrixForm

To correct this, SymbolicRR gives the type of answer one would arrive at when doing row reduction by hand.

SymbolicRR[(({{1, 1, 3, x}, {2, 0, 2, y}, {3, 1, 5, z}})), {x, y,z}] // MatrixForm

Note the importance of including the correct variables.

SymbolicRR[(({{1, 1, 3, x}, {2, 0, 2, y}, {3, 1, 5, z}})), {a, b,c}] // MatrixForm

The variables are optional, so SymbolicRR can be used in place of RowReduce.

SymbolicRR[(({{3, 5, 1}, {-2, 3, 8}, {3, 1, 9}}))] // MatrixForm

SymbolicRR will attempt to make simplifications such as sin^2(x) + cos^2(x) = 1 and continue with row reduction.

SymbolicRR[{{1, 1, 2, Sin[x]^2}, {1,1,2, -Cos[x]^2 },{7,8,9,z}}, {x, y, z}] // MatrixForm

This process of simplifying and continuing with row reduction will only occur 10 times, though that can be easily changed.  This is to prevent Mathematica from entering an infinite loop when an incorrect matrix is inserted.

a = {{3, 4},{5,6}};
SymbolicRR[a, {x, y,z}] // MatrixForm
SymbolicRR[A, {x, y,z}] // MatrixForm

Documentation can be viewed using...

?SymbolicRR