By running your code, I obtained the following results:
In[50]:=
X = {{Subscript[a, 0] + Subscript[a, 3],
Subscript[a, 1] - I Subscript[a, 2]}, {Subscript[a, 1] +
I Subscript[a, 2], Subscript[a, 0] - Subscript[a, 3]}};
coeffs = {Subscript[a, 0], Subscript[a, 1], Subscript[a, 2],
Subscript[a, 3]};
matrixA = Array[b, {4, 4}];
matrixXgeneric = Array[x, {2, 2}];
solA = Solve[
Eliminate[{matrixA . (X // Flatten) == coeffs, X == matrixXgeneric},
coeffs], Flatten[matrixA]]
matrixSol = matrixA /. solA[[1]] /. b[__] :> 1
matrixSol . (matrixXgeneric // Flatten) == coeffs /.
Thread[Flatten[matrixXgeneric] -> Flatten[X]] // Simplify
During evaluation of In[50]:= Solve::svars: Equations may not give solutions for all "solve" variables.
Out[54]= {{b[1, 4] -> (
x[1, 1] - 2 b[1, 1] x[1, 1] - 2 b[1, 2] x[1, 2] -
2 b[1, 3] x[2, 1] + x[2, 2])/(2 x[2, 2]),
b[2, 4] -> (-2 b[2, 1] x[1, 1] + x[1, 2] - 2 b[2, 2] x[1, 2] +
x[2, 1] - 2 b[2, 3] x[2, 1])/(2 x[2, 2]),
b[3, 4] -> (-2 b[3, 1] x[1, 1] + I x[1, 2] - 2 b[3, 2] x[1, 2] -
I x[2, 1] - 2 b[3, 3] x[2, 1])/(2 x[2, 2]),
b[4, 4] -> (
x[1, 1] - 2 b[4, 1] x[1, 1] - 2 b[4, 2] x[1, 2] -
2 b[4, 3] x[2, 1] - x[2, 2])/(2 x[2, 2])}}
Out[55]= {{1, 1, 1, (-x[1, 1] - 2 x[1, 2] - 2 x[2, 1] + x[2, 2])/(
2 x[2, 2])}, {1, 1, 1, (-2 x[1, 1] - x[1, 2] - x[2, 1])/(
2 x[2, 2])}, {1, 1,
1, (-2 x[1, 1] - (2 - I) x[1, 2] - (2 + I) x[2, 1])/(
2 x[2, 2])}, {1, 1,
1, (-x[1, 1] - 2 x[1, 2] - 2 x[2, 1] - x[2, 2])/(2 x[2, 2])}}
Out[56]= True
But I still cannot see how a _ i (i=0,1,2,3) are expressed via X _ ij by your results.
But I still can't see how your result represents a _ i (i=0,1,2,3) by X _ ij (i=1,2, j = 1,2).
Regards,
Zhao