Now if I eliminate all the unused code and ask it to evaluate only the expression that you wish to maximize
In[1]:= Phi[x_] = CDF[NormalDistribution[], x];
phi[x_] = PDF[NormalDistribution[], x];
Pi0sL[\[Mu]_, x0m_, x0s_] = p x0m - (sg + (c + m0) tg) x0s + Phi[(x0m - \[Mu])/\[Sigma]] (-p x0m + (eg + sg+
(c + m0) tg) x0s + (-eg + p - sg - c tg - m0 tg) \[Mu]) + Phi[(x0s - \[Mu])/\[Sigma]] ((-eg - sg - (c +m0)
tg) x0s + p \[Mu] + (eg - p + sg + c tg + m0 tg) \[Mu]) + phi[(x0m - \[Mu])/\[Sigma]] (eg - p + sg + c tg+
m0 tg) \[Sigma] + phi[(x0s - \[Mu])/\[Sigma]] (-p \[Sigma] + (-eg + p - sg - c tg - m0 tg) \[Sigma]);
Pi0sR[\[Mu]_, x0m_, x0s_] = -(c + m0 + (1 + tg) r0) (x0s - x0m) - (tg (c + m0) + sg) x0s + p (-(x0s - \[Mu])
Phi[(x0s - \[Mu])/\[Sigma]] - \[Sigma] phi[(x0s - \[Mu])/\[Sigma]] + x0s);
Pi0s[\[Mu]_, x0m_] := Max[FindMaxValue[{Pi0sL[\[Mu], x0m, x0s], 0 <= x0s <= x0m}, {x0s, x0m}],
FindMaxValue[{Pi0sR[\[Mu], x0m, x0s], 18 >= x0s >= x0m}, {x0s, x0m}]];
Pi0mLR[d_, \[Gamma]_, x0m_] := -(c + m0) x0m + \[Gamma] Pi0s[L + d, x0m] + (1 - \[Gamma]) Pi0s[L, x0m];
Pi0m[d_, \[Gamma]_] := FindMaxValue[{Pi0mLR[d, \[Gamma], x0m], 0 <= x0m <= 18}, {x0m, L}];
L = 4; \[Sigma] = 1; p = 20; c = 1; m0 = 3; m1 = 6; sc = 0; sg = 2; eg = ec = 2; r0 = r1 = 4; tg = tc = 0;
Pi0mLR[2, .5, x]
then I get
Out[9]= 88.4042 - 4 x
and with 0<=x the maximum of that is the 88.4042 that you are seeing.
So FindMaximum returning an incorrect value does not appear to be your problem.
If you change your
Plot[Pi0mLR[2, .5, x], {x, 0, 10}]
to
Plot[Evaluate[Pi0mLR[2, .5, x]], {x, 0, 10}]
then you will see

Why that happens is a whole different subject that I will leave to someone else to clearly explain.