There's a functional reason for having both, at least in larger environments. Let's say that the company names their servers by function, business unit, and location. You could have cas5-opr-tx.us.company.com. Getting your users to type that into a box could be fun times. Having an external address of mail5.us.company.com is a bit easier.

Edit: There's also a very minor security reason. You can separate your internal naming convention from the external to make it (every so slightly) more difficult to learn about your internal network.