You could use partimage. I don't know if this is in puppy, but it is in the Knoppix and DSL boot CDs, as well as GParted Live.
Partimage works a bit like Norton Ghost, making an almost exact copy of one partition as a file that can be writen back to the second.
plug the first USB stick in, and assuming your stick is sdb1, run the following command:
partimage -z1 -d -c -b -V50 -f3 save /dev/sdb1 ~/myUSB.part.gz
This will make a compressed, non-described, non-checked, image broken into 50Mb pieces called myUSB.part.gz### in your home directory.
You can now unplug the first stick (unless you booted from it).
Plug in the second, larger stick.
Assuming the new stick is /dev/sdc1, run the following:
partimage restore -b /dev/sdc1 -b ~/myUSB.part.gz000
This will write the image onto the new stick, along with the boot sector, hidden files and so on. One of the neat features is that the two partitions don't have to be the same size (like using DD or ghost would need).
If you wanted to, you can use this method for backing up any sort of storage device, too.