In the case of the US, it was a doctrinal mistake. US tanks were meant for infantry support. They were not intended to fight other tanks. That job was supposed to be taken on by the Tank Destroyers, which were supposed to use speed and maneuverability to destroy enemy armor. Hence, proper tanks did not need high armor protection-- they were not supposed to fight anything but infantry. Nor did they need high velocity main guns since they were -again- not supposed to target enemy armor.
Heavy armor was not desirable for tank destroyers, which were not supposed to engage in toe to toe slugging with enemy armor, but were supposed to be able to use their superior mobility to get in positions on the enemy armors flanks or rear. Think mobile AT gun.
Obviously this doctrine was seriously flawed. A large part of our time in Armor Officer Basic was spent on examining the doctrinal mistakes of the US Armor Branch in WWII.