I use git for my source control, but you can use pretty much anything. You don't really need to keep the zip if you're good about source control, but I still like to keep the zip after each time I publish since I'm not real good about committing things in git at the appropriate times and it's just easier for me to find the zip that went with a release than going through git (I'm far from a git expert). There's really no need to keep any more than one package since there's no way to "depackage". Any package can be used to rekey a unit, so you just need to keep one with its password. I'm sure your deployment script downloaded the pkg from the Roku since I don't believe there's any way to create a pkg without a Roku device.
You can publish with different keys, but it's definitely not recommended and you'll get no error/warning that you're using the "wrong" key. You'll lose any registry entries your channel has created since they're tied to the key. You can use the same key for multiple channels and then they can share registry entries. There's rarely a need for that, but I also don't want to go about creating a new key for every channel I create. When a user removes a channel (or all channels that used the same key), the registry entries associated with that key are purged from the unit on the next reboot/update.
I suppose technically you don't even need to keep the pkg since you can always download it from the developer site. It downloads with a .zip extension, but it's really a pkg. I just like to keep one around for each one of my projects.
-JT