Letting zip do the splitting for you will be much easier to automate than trying to figure it out by yourself. If your goal is 20MB zip files, you will have to estimate the compressed size of each file before adding it to the archive. Is there a reason you don’t want to just let zip do the splitting for you? Here’s how you’d do it with gnu zip:
zip -s 20m -r myzip.zip mydir
This will create 20MB zipped files with incremental index numbers in the filename.