Just restarted the scenario (as the save file is just as the Germans start their turn, and I always got the same error message). Ended up in the same situation. So this bug is 100% reproducible.
Steps:
1) 5th ID (on Mainz) needs an M8 Greyhound specialist step
2) Using 90th ID in scenario Plunder (south of Mainz), airplanes, and other units that can use suppresive fire, weaken 159 ID German infantry
3) 5th ID (on Mainz) does an assault crossing on 159 ID
4) The game engine should resolve the situation as such:
__________a) 159 ID will retreat to the unamed town south of Frankfurt (likely as a two step suppresed unit)
__________b) 5th ID will cross the river
__________c) Due to the M8 Greyhound specialist step, my borders will expand to include the following three hexes:
___________________i. The one on which 5th ID arrived
___________________ii. The one directly south of Frankfurt. No issues there, there are no units with zone of control to contest (159ID is fully suppressed and "weak")
___________________iii. The one with the unamed town. Again, there are no units with zones of control to contest given that 159ID is fully suppressed and "weak"
__________d) The M8 Greyhound is suppressed given that 5th ID just crossed a river
5) 159 ID is now within my borders
It would seem that the check to expand borders is either executed at a time where 159 ID's position hasn't been resolved, thereby allowing the hex to be added to my borders, before 159 ID can retreat. The game crash upon German turn every time since the code is probably not built to handle Germany units in Allied territory