Removing the whole copy function is a daring step I know :). Consider this proposition as a question if we can even consider to removing copy function in order to fix the problem. Because write mode started working after this change.
When an implemented KIO::SlaveBase function is missing or calls error(...), KIO tries to call another one to achieve what was needed. In our case - reading a file is firstly tried with "copy" function and if it fails, KIO tries to read the file using "get" method. Accidentally this was exactly the scenario when write mode was disabled. Copy function ended with error(...) call so "get" was performed instead and file was successfully opened. When write mode was enabled copy function didn't end up with error, was successfully performed. But file was not opened for some case and "get" function was not called.
EDIT: Diff updated according Davide's guidance. Patch works as expected.