I wear an undershirt because I have a tattoo on my shoulder that bleeds through some of my dress shirts. An undershirt solves the problem.
ps - Tat removal is ongoing.
The poll here shows the majority of SFers wear undershirts, myself included.
If I'm wearing a white dress shirt in the summertime I may or may not wear a crew neck shirt underneath. In the wintertime I usually wear a crew neck for the warmth underneath a white shirt. If I'm wearing any other color I will usually wear a wife beater throughout the entire year. Where I work, the summer days can hit 110. Just going outside a short time for lunch walking around in wool pants will cause me to sweat. The undershirt absorbs the sweat so it doesn't look like your dress shirt has patches of moisture all over. Also since I wear a deodorant/anti-perspirant, the crew neck undershirts will eventually get yellow stains on them. It's better for the undershirt to take this beating than your dress shirt.
I'm really skinny and have taken to wearing the Funkybod undershirt which fills you out and makes for a more manly appearance. See www.funkybod.com to see what I mean. The other thing it does is to stop armpit sweat from ruining my expensive shirts. All the guys in my office wear an undershirt of some sort. I started wearing one because one of the guys in the office was wearing it to hide his manboobs which he talks openly about. When you see someone in a formal shirt without an undershirt the look is not as good in my opinion, looks cleaner with an undershirt on, especially when wearing a white shirt.