This kinda relies on your objects being cheap to copy/move. Try doing your pass-by-value (not return-by-move) with a non-COW container, and see how it works.
OK, re-reading this it looks like maybe he is talking strictly about return-value optimization. For some odd reason I thought he was claiming significantly more than that (such as not making copies of your pass-by-value parameters).