According to the Erlang docs on :zip.create/3 there is an optional third argument with options where you could set the working directory for compression with [cwd: path]. The effect is that files will be looked up within that path and will omit the path in the compressed file.
Expanding on your example:
files =
File.ls!(path)
|> Enum.map(&String.to_charlist/1)
:zip.create("files.zip", files, cwd: path)
$ unzip -l files.zip
Archive: files.zip
Length Date Time Name
--------- ---------- ----- ----
212151 09-22-2016 17:32 file1.txt
333814 09-22-2016 17:32 file2.txt
269066 09-22-2016 17:32 file3.txt
333736 09-22-2016 17:32 file4.txt
284213 09-22-2016 17:32 file5.txt
--------- -------
1432980 5 files


















