While I haven't personally done any user testing on this specific aspect, I can recall specific instances where i have been infuriated by the repetition and instances where i was glad i had to retype my email address. Maybe these use cases will provide a better understanding of when to ask for a retype of email address:
I got Infuriated:
I remember the sign-up form for the Amazon mobile app needed an email retype. This was when the app was first released and i am unsure if they have removed this or not. But i remember thinking that it made no sense for me to retype my email address. It was trivial information and i had wasted the 5 seconds it took to type my relatively small email address.
Why i didnt find it helpful: While the email address was pivotal as a data set, any wrong information could have been easily solved with negative feedback. Also, the registration was a 2 step process and so I could easily have been allowed to review my inputs at the next stage.
I found it helpful:
When i was filling out an online form for my bank account, one of the fields was my email address. All information including my bank statements and transaction information was sent to this email address. Here they required me to retype and reconfirm my email address.
Why i found this helpful: My email address was linked to so many important functions that alleviate my online banking experience. If i had made an error in entering my email address, i would be sending sensitive information to someone else which is not what i wanted.
Please remember that good User Experience is subjective and hinges on the context of the situation. If the input being filled NEEDS to be correct and you don't want to have any room for errors, then yes, a reconfirmation is not a bad idea. But if it can be solved in another way (like I had mentioned with the Amazon application), then, by all means, use the tools at your disposal to make a better user experience for your users.
Hope this helps ^_^