I don't understand why one team would always score if the server handled the flag-management, that must be some weird scripting.
The thing is, if you do a calculation on a client, that client has to propagate the changes through the network manually, it has to send the results to the other clients. If you do the same calculation on the server, the client/server netcode model in OFP will handle the propagation of the changes through the network. Basically, if it's on the server, the script needs to run once, if it's on the clients, the script needs to run on each client, multiplying the amount of data sent around.
To keep track of who is supposed to take the flag, have a variable on the server which holds the side of the team eligible to take the flag, such as EAST or WEST. Then you can check the side of any unit trying to capture the flag, and if it doesn't belong to the appropriate side, he won't be able to capture it.