Есть такой универсальный способ. В заголовке окружения
array можно задать между колонками так называемое at-выражение, вида
@{ ...
} . Такое выражение:
1) убирает интервал между колонками;
2) вставляет между колонками в каждой строчке то, что записано в его аргументе.
Поэтому, можно сделать, например, так:
\left\{
\begin{array}{r@{}r@{}r}
-12x_1+{}&4x_2={}&33\\
7x_1-{}&8x_2={}&-2\\
&5{,}5x_2={}&0\\
\end{array}
\right.
(Пары фигурных скобок
{} добавлены для того, чтобы вокруг знаков ставились правильные пробелы.)
А можно сделать так:
\left\{
\begin{array}{r@{{}+{}}r@{{}={}}r}
-12x_1&4x_2&33\\
7x_1&(-8)x_2&-2\\
0&5{,}5x_2&0\\
\end{array}
\right.
И даже так:
\left\{
\begin{array}{r@{x_1+{}}r@{x_2={}}r}
-12&4&33\\
7&(-8)&-2\\
0&5{,}5&0\\
\end{array}
\right.
См. Львовский, параграфы VI.2 и VI.3 (там применяется окружение
tabular, это нематематический аналог
array, в остальном они одинаковы).