The LZ algorithm can be made to start from an offset bigger than 0. Starting from 1 is a valid option. It is my belief that it is good to start from 2 or from 4 instead of starting from 1, for alignment reasons. The needed modification in deflate.c from the package zip-2.3 was not too big, and all tests seem to run fine. When there is no match at offset zero, the zip file produced is identical to that produced by the original zip.
Any help is appreciated.