Sending code only generally means that you must have agreed to whatever license grants you the right to prepare and distribute that code. The assumption that someone distributing a modification to a BSD-licensed work agrees to distribute the modification under the BSD license is no more safe that the assumption that the person distributing the modification agrees to buy the maintainers beer. As such, projects probably shouldn't accept contributions without some sort of actual agreement, because they can't tell whether that would change the terms of the project or not.
FWIW, I think that copyright assignments are a bad idea in general, which is part of why the only contribution I've made to a GNU project is one where I convinced the maintainer that my change wasn't copyrightable (IIRC, I removed a bogus clause from an expression in make 3.79). But I would happily agree to allow a project to sublicense whatever I send them under the licenses they apply to the releases they make, particularly if the wording of this agreement has gone through public review by community lawyers.
Note that Fedora is actually planning to require contributors to sign an agreement to let Fedora use contributions in the obvious way. They feel that, even though they aren't asking for anything special (like copyright assignment), it's worth having the agreement in place.