In zen_mail :
$from_email_address is passed into the function which in the case of, for example, tell-a-friend is the email address of the customer.
Line 220 puts this into the mail object.
Code:
$mail->From = $from_email_address;
Then a few lines later this is replaced with the store address if the setting in admin is to always use the store address.
But when the archiving is done the code reads:
Code:
zen_mail_archive_write($to_name, $to_email_address, $from_email_name, $from_email_address, $email_subject, $email_html, $text, $module, $ErrorInfo );
So the original $from_email_address is used.
Which means that if the admin setting is to always use the store address then the email is sent from the store address but is archived as if the email has been sent from the customer. (Of course, the store owner should know that all emails are sent from the store address)
As I say it is a bit moot as to whether you might want to store that information anyway. But to me it seems that the archive should reflect the emails that are actually sent. So $mail->From should get passed into zen_mail_archive_write rather than $from_email_address.
But it is a minor point and I guess there is some advantage in storing the customer's email address here too.