Does the email address always have to be in the donation section on a Contribution Form?
For contribution forms yes. For event registration pages, the code has been modified to detect if an email address is being recorded in the profile and if so to remove it.

Might be easiest to take a look at the event registration code and see if you can port the relevant code to the contribution side of things