Well, you seem to sometimes be using PlayerSide and PlayerGroup and sometimes be using LinkCTI_PlayerSide and LinkCTI_PlayerGroup. This could be causing inconsistent results, but I think that is probably a copy-and-paste error, so I assume that isn't the problem you are asking about.
Your confusion stems from believing that you can have variable references in SQF, which you can't. The code,
call compile format["ArrMoney_Si%1_%2", PlayerSide,PlayerGroup]
resolves to the value of ArrMoney_Si1_6, not to a reference to the variable itself. If it was a reference, then you would have been able to perform the assignment that you are attempting.
Anyway, the overall code should, most simply, be:
call compile format["ArrMoney_Si%1_%2 = ArrMoney_Si%1_%2 - _price", PlayerSide, PlayerGroup];
Incidentally, you could use normal arrays for this to avoid the use of code-generation altogether (always a good idea, since code-generation is slower and more prone to run-time errors):
(ArrMoney select PlayerSide) set [PlayerGroup, ((ArrMoney select PlayerSide) select PlayerGroup) -_price];