The 'o' switch shouldn't be required when the export location exists as a foldername
I personally want the current behaviour. If I am extracting a zip to an existing folder, it could overwrite files or change folder structure. So I chose to make $zip() fail if the file or folder exists, unless 'o' is used. That is the purpose of 'o' in this case. If you need a different behaviour, I am afraid you will need to script it.
As for the invalid parameter error, I will change this in the next version to report a file error.