From the middle of the war, and certainly by Barbarossa, it is not unusual to see German units without rivercrossingpenalty's. Infantry has a standard river crossing penalty of 50, but there are two techs in the infantrytree that reduce that penalty to zero. These techs are under Improved Infantry weapons and the German AI usually has these well before Barbarossa. Engineers reduce the rivercrossing-penalty by 30 points and are usefull for mot, mech and armour (techs for these units will only reduce it by 20 points, with engineers they reach zero). They can also be useful for countries who lack the IC's to develop improved infantry weapons and/or don't have leaders with the engineer trait. Leaders with the engineer trait negate all rivercrossing penalty's, and probably all bonusses as well.
I have also seen that marsh is either not visible in the tooltips or is not accounted for. For now, I don't know what the problem is but the save file shows a penalty to all units of at least -15.
Edit; just tested something and the tooltips doesn't show the penalty for swamp_attack, but it is there. I sent 9 german infantry divisions directly into Danzig, the first time with the standard penalty of -15 and the second time with a penalty of -50. Same commander, same weather, same date and time but their efficiency was 35% lower. So although you don't see it, they are operating at a lower efficiency.