Excuses are "this is why I'm not at fault" and places the blame on someone or something else (including a circumstance). A reason is "this is why it happened" without trying to self-justify. A lot times reasons come across as excuses because the person has not taken responsibility for what they've done.
If a reason doesn't come with ownership of fault, it's an excuse.
Edit: see comment below about fault and responsibility
I think I should choose my words more carefully now that you say that. There is a difference between fault and responsibility, and it's really more a matter of taking responsibility for things that are your responsibility.
So let's say I leave home in a reasonable time to meet someone. However there are a series of car crashes on the way that cause traffic to back up. The accidents did not yet occur when I left my home, so I could not have accounted for them. My lateness is not my fault, because I did not cause the situation nor could I change or avoid it, but it is my responsibility to my (friend, date, boss, whoever) to call them and let them know my new estimated time of arrival. If I don't try to let them know, they have every right to be angry with my for showing up an hour late, even though the lateness is not caused by my action or inaction.