I just realised today that SPF checks break traditional e-mail forwarding methods, where the envelope sender is preserved. However, there is a fix called SRS (sender rewriting scheme) that creates a new unique envelope sender at the forwarding domain, that can be re-mapped by the MTA to the orginal sender, should any bounce messages come back.
You can read more about this at the SPF Forwarding FAQ and also on this overview of SRS implementation.