Even though the field is hidden or disabled its underlying value still exists in the system thus can always be referenced.
One other way to approach this is to use the code token to assign email to the email1 field. Basically the code token would only assign a real email if the user is an authenticated user. The code token would look something like
[[CODE:
string val = "[ROLE:NATIVE]";
if (val == "")
return "email1@email.com";
else
return "";
]]
In the workflow processing task you could then set it so that it will only send email if value in the email1 field is not empty.
My only concern is that you are using an older version of Enterprise Forms in which the token [ROLE:NATIVE] may not be supported.