Off the top of my head (i.e. without the usual testing that I apply to my suggestions here): If you are not worried about wastage and you furthermore assume that your friends stick is larger than yours, why not use a
Windows version of dd?
So at your end do a
dd.exe --list and figure out (e.g. by using the size information) which one is your USB stick (e.g. "\\?\Device\Harddisk2\Partition0"). Note: this one should be the entire disk, there should be another one (e.g. "\\?\Device\Harddisk2\Partition1") which would be the included (primary) partition. I see this pretty much as the same as '/dev/sda' vs. '/dev/sda1', so the size should be different and the larger one should be the entire disk.
With that information you could create the full disk image (e.g. via
dd.exe if=\\?\Device\Harddisk2\Partition0 of=usb_stick.img bs=1M --progress). Note: There is likely to be an error message at the end of reading like "Error reading file: 27 The drive cannot find the sector requested", but I don't consider it a real problem as you are basically instructing it to read the entire USB stick until the end. Furthermore the size of the image file should exactly match the size of the disk as reported by 'dd.exe --list'.
Note: I've now come across a situation where when using 'bs=2M' I ended up with an image file that was 1 MBytes short. If using 'bs=1M' does not create a file of identical size to the disk I'd suggest to fall back to not specifying a block size at all. In this case the default of a single block (i.e. 512 bytes) will be used, and the reading goes much slower. But at least this way the entire image should be read.
Then zip it up with the compression tool of your choice and send it to your friend. He'll have to extract it again and then comes the "real fun part" of writing it to his stick (e.g. via
dd.exe if=usb_stick.img of=\\?\Device\Harddisk2\Partition0 bs=1M --progress). Needless to say if he mistypes the destination device, or is wrong in his analysis of which one would be the correct representation of his target, he stands a good chance to screw up his Windows installation big time (or whatever other false target he might hit). So as they say here: "No pressure!!"
EDIT 1: As a consequence of my own testing I've made minor adjustments to the suggested command samples above (i.e. made it more obvious that we are dealing with a Windows program, added a blocksize parameter (which increased the execution speed quite significantly) and added the useful (but non-default) option of '--progress').EDIT 2: I had to change the block size option from 2M to 1M, and added an additional suggestion to compare image file size with the disk size (i.e. partition0)