Unfortunately, as unrealistic and annoying as that tactic may be, it’s perfectly ‘legal.’ According to the starter set rulebook:
“Defensive Fire Causes Immediate Disruption: If a defensive-fire attack scores a number of successes equal to or greater than the target’s defense, the target ends its movement in its current hex and is disrupted immediately. Place a face-up Disrupted counter on the unit. Face up Disrupted counters are removed as the start of the next casualty phase, as normal.”
Of course, he is sacrificing his attack with those units. You simply have to find a way to make him pay. In general, I never leave my units uncovered. A nice PAK 40 or a 40mm Bofors can provide nice cover fire for your front-line units, depending on what he’s trowing at you.
Another thing, always have overlapping fire (not the ability) between your units. Try to keep all your units within a reasonable support distance of each other. If you split you unit up, you run the risk of them getting cornered. Obviously, this is easier to maintain if you have armor on the board to cover your infantry. If you have artillery fire to cover them or, even better, another squad of units, you maximize the risk your opponent has to take to assault those units.