The logs with the wrong timezone aren't from a remote host, but locally created.
But looking some more into my system, I noticed I don't have /tmp/TZ. Linking that to /tmp/localtime and restarting rsyslog solved the problem.
Is that a bug I should report? If so, what would be the bug? That /tmp/TZ is not created at boot or that rsyslog reads /tmp/TZ instead of /tmp/localtime?
Try to comment the default timestamp template and add custom template with timegenerated option in the rsyslog config file.
# Use default timestamp format
#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
#Custom Time format
$template myFormat,"%timegenerated% %HOSTNAME% %syslogtag%%msg%\n"
$ActionFileDefaultTemplate myFormat
As I wrote before, linking /tmp/TZ to /tmp/localtime solved the problem. It seems to me, rsyslog checks /tmp/TZ to determine if any timezone is set. And if that file is missing, then it uses UTC.