Raspi,
I did not think about whether this is the "best" way to solve the problem -- I just looked at fixing what you tried to do. The Region functions (like Area) appear to work numerically so based on that I think you need to take a numerical approach:
areacalc[xi_Real, yi_Real, ai_Real, reg_] := Area[reg] /. { x -> xi , y -> yi, a -> ai}
r1 = Region@Polygon[{{0., 0}, {a/2, 0}, {x, y}, {0, a/2}}];
r2 = Region@Polygon[{{0., a/2}, {x, y}, {a/2, a}, {0, a}}];
r3 = Region@Polygon[{{a/2, a}, {x, y}, {a, a/2.}, {a, a}}];
r4 = Region@Polygon[{{a/2, 0.}, {a, 0}, {a, a/2}, {x, y}}];
eqs = {areacalc[x, y, a, r1] == 16., areacalc[x, y, a, r2] == 20,
areacalc[x, y, a, r3] == 32,
areacalc[x, y, a, r4] == a^2 - (16 + 20 + 32), 11 > x > 0,
11 > y > 0, 11 > a > 0};
In[45]:= NMinimize[Prepend[eqs, 1], {x, y, a}]
Out[45]= {1., {x -> 2.44949, y -> 4.08248, a -> 9.79796}}
The key to making this work is "Protecting" the areacalc function from evaluating until it has numerical values for x,y,and a. This is why I used patterns such as xi_Real. The pattern match will only happen when the xi, yi, and ai get numerical values.
I hope this helps,
Regards,
Neil