Firstly, sadly it’s nothing to do with scripting 
Secondly - mp_beach does what I said they do above, meaning I need my fix detailled above.
Since you chose mp_beach (good example, I wracked my brains for a map that used it but couldn’t come up with it!).
The scenario is:
There’s a flag only allies can ‘get’ - axis merely ‘resets’ it.
However, the difference between my scenario and beach’s is that the flag in beach is not a spawn location for the flag’s team (allies) at the start.
In other words, Allies must capture it first before it’s effects kick in, and hence can be cancelled out by Axis.
To try to fit my needs into the mp_beach situation, imagine beach as it is but allies start the map with the forwrad bunker already captured.
Assuming no allied player touches the flag (they all run out to attack!) you are stuck with the flagpole alone, but with active spawns. Worse still, if Axis now touches the pole, nothing happens, no script event is generated to let the script know axis has ‘recaptured’ the flag.
Thinking about it more, I think possibly ‘bug’ is too strong a description. While the flag doesn’t behave how I want it to, it DOES behave logically in situations like mp_beach. The entity can’t do both in it’s current incarnation, I just got unlucky that the way I want to use it wasn’t the way the programmers chose to implement it 
You can try it out for yourself simply enough - create a box map with 3 flag poles. Make them all spawnflags.
On one, select the axis_only, on another, select allied_only and leave the last one (IE so both teams can get it).
Then give them scriptname keys of axis_flag, dual_flag and allied_flag (as appropriate.
Then use the following script:
game_manager
{
spawn
{
}
}
axis_flag
{
spawn
{
}
trigger allied_capture
{
wm_announce "allied capture axis flag"
}
trigger axis_capture
{
wm_announce "axis capture axis flag"
}
}
dual_flag
{
spawn
{
}
trigger allied_capture
{
wm_announce "allied capture dual flag"
}
trigger axis_capture
{
wm_announce "axis capture dual flag"
}
}
allied_flag
{
spawn
{
}
trigger allied_capture
{
wm_announce "allied capture allied flag"
}
trigger axis_capture
{
wm_announce "axis capture allied flag"
}
}
Then run it.
What you’ll find is that on map start, if you are axis, touching all 3 will only trigger 2 script responces (dual and axis only). If allies, touching all 3 will only trigger 2 as well (dual and allied only).
Note this is the FIRST touch only - once the team_only ones have been triggered properly the first time, they will happily toggle.
Anyway, I have a work-around that’s running fine. Still a bit annoying that the flag isn’t up at the start, but if I was really bothered I could probably find the flagpole and place it as a model manually until such time as one of the teams touch it (resulting in either the proper flag appearing, or no flags). I may do that for my next version, but hunting for models and stuff isn’t that much fun, so I’ll leave it as is for now 