I see some minor things here:
1) createUnit generally requires a handle (i.e.: _variable = "SoldierWB" createUnit....). In this case you don't need to recognize the unit created, so using nil should be fine:
nil="soldierEB" createUnit [getMarkerPos _marker1, _group]
Second, I have no idea how the createGroup command works, but if it works for you then great
The problem with spawning is, perhaps, that ArmA generally needs at least one dummy unit for the side present on the map before it can begin spawning new ones (to initialize AI centers and stuff). Are there any east units present before you try running the script? If not, try putting one down and run it then (you can leave the dummy unit out on some island someplace).
Finally: What's up with the countSide in the final check? I'm guessing they're not changing side, so what you're looking for is probably waiting until they're all dead. Two problems:
1) There's no ~ (sleep) in the loop! I guess a simple check like that won't make your computer go gaga, but it's generally bad practice to have any kind of loop without giving the computer a chance to rest in between. I suggest a ~0.02 at least, if it's that important to check that often. But I bet having a ~ of several seconds won't markedly mess with the script in this case. The same can be said for the first loop
2) A slightly better way, perhaps, of checking for if people are still alive in the group is something like
{alive _x} count units _group < 1
. The above will count the number of units in _group that correspond to the code between the curled brackets (i.e., alive or not). If it's less than 1 (i.e., none), you can reset the loop and such...
Getting any other error messages etc?
Wolfrug out.