Hi Ian,
Actually Buyer information (details from the customer -- First Name, Last Name, Email Address, Street Address...etc) is just optional and the purpose of this information is to pre populate the sign up form in PayPal website so that the customer dont need to fill up the same information again. But, it DOES NOT NEED to match the final information that the customer provide from the PayPal website and as you understand that, the customer details that you provide along with the buy now button can be overriden in the PayPal website by the customer if he wants to.
Same is true about the email address. The email address is for prepopulating in the PayPal website login email address. So, if the customer wants to use a different email address in PayPal website, you have nothing to do with that. If you want to track which customer actually paid (as there is no gurantee that the customer will use the same email address from PayPal website), you should record the customer's id (or email address) in your database along with the Invoice id you generate for the BuyNow button. Then, in your PayPal_Returned or IPN_Notified event handler method, get the Invoice id and then, match the Invoice ID with your Database recorded Invoice and in that way you can identify the customer. You will get the final email address of the customer that used by PayPal from the event argument object 'e' of the IPN_Notified /PayPal_Returned event. Maybe you can update your SQL database with the new email address of the customer if you find that it is different from the one that customer used for registration. All depends on your preferred business logic.