Opinions vary, but the most common explanation is that it derives from the old French 'pont chardon' meaning 'guardian of the bridge'. Pontecardon is near Rouen in France. In 1066 Robert de Punchardon, whose family lived in the Manor of Pontecardon, fought with William the Conqueror during the Norman Conquest and was rewarded with much English land, most of it in Devon. One of these areas Heanton subsequently became Heanton-Punchardon and was the manorial home of the family for several generations. The Punchardon name became Punchard over time, and about 150 years ago the Puncher derivative started appearing.
There are other versions or the origin of the name, but this seems more likely. Further information available at my web site
http://www.puncher.co.uk/gen_surname.php