However, I don't know how to do that without doing crazy complicated things with enabling/disabling path_tracks.
I think you'll still have to some crazy complicated things--see below, but disabling/enabling path_tracks sounds like it'll be a pain to manage and difficult to get right.
It'd probably work better if you put a logic_relay beside each path_track where you'd want the flag to stop. The path_track should trigger its relay OnPass, and the relay in turn tells the train to stop.
OnCapTeam1 and OnCapTeam2, you disable all these logic_relays (wildcards ftw), update the math_counter (add or subtract depending on which team scored), send the outvalue to the logic_case, which then enables the appropriate path_track.
Also, OnCapTeam1 you'd tell the train to StartForward, but OnCapTeam2 StartBackward.
If you aim for your track to support no more than 8 stopping points on each side (i.e. if red is beating blu by 8 or more points the cart would be right at the red end of the track), you'll only need one logic_case. Set the math_counter to start with a value 8, and the logic_case's Case01 through Case15 to have values 1 to 15.
Number off your stopping points from 1 (the stop just before the red base end of the track), through to 8 (in the middle), then to 15 (the stop just before the blue base end of the track), give the logic_relays names with a corresponding number, then the logic_case's OnCase01 through OnCase15 will just enable the same numbered relay.
The two endpoints of the track give you the last two stopping points, but you don't need relays there or logic_case entries since the cart will automatically stop.
I think that's fairly simple all up: N relays, 1 counter, 1 compare, and only a handful of I/O.