I'm also one of those people that is always late, even though I've gotten better at it. As for reasons why? it's difficult to pinpoint just one, since it's dependent on the situation...
When it comes to work-related stuff, one of the reasons is that I would have to engage in social conversations I don't like, talking to people I don't like... , so that's one reason for trying to arrive 'just on time', which occasionally will make me late.
For social events with friends I'm usually 5 - 10 minutes late. I'd try to be on time but there's always something I've forgot at the last minute that I just have to do. Since it's just friends hanging, I don't care too much. I'll let them know I'll be a few minutes late and that's that. Don't see a problem with it.
If it's something with a clear set time and people depend on me (going to the movies f.e.), I'll be on time because I don't want to be the asshole that made everyone miss the start of the movie.
Most of the time when I'm late I'll have some reason but in the end it boils down to bad time management.
One thing to remember though, is that being on time, isn't as easy for everyone and not just a matter of 'just doing it'. It's something that I've had to work at, to be somewhat functional in a work situation and I still struggle with from day to day.