I recently faced some problems with workflows which performed pretty easy actions and I was forced to re-do them under impersonation step.
In a situation where a list allows entries from all (all are contributors) I set up a send email workflow when item is created to send a receipt about the entry. The workflow was not sending the email to the 'created by' user. When I used Impersonation step, it worked.
Why is that? The list is set as all can read but you can only modify your own entry and there is also the approval feature, so when the item is created it is pending.
Can someone explain why I need impersonation step to have the email fired up?