Barry
Windows uses an 'inf' text file for each modem type/model - usually stored in a subdirectory of the windows directory. AT strings read from this are passed to the modem to initialise it, thus over-riding the stored settings.
Easy way to find out what it is doing (in windows) - look in the properties of the modem (Control Panel) and find the check box for writing a log file. AFAIR you can go back and view the log file from the same place after making a connection. That should give some clues.
Alternatively: as Ted suggested, try AT&F as the init string instead of ATZ. This will restore the factory default without permanently re-writing the existing values held in the modem nvram. The snag with this is that the manufacturers defaults are not always the most useful.
Another tactic is to start up hyperterminal set to talk to the modem comm port. As this is a windows program it will use the inits from the .inf file. If you now issue the command AT&W, from hyperterminal, the current values will be written to the modem nvram and thus become the new defaults set by ATZ. Then if all is going well and the wind is with you, ATZ in linux will put the modem in a working condition.
And of course you can change any settings you want from within hyperterminal before writing them to nvram.
I am working from memory, although none of the above should be modem specific since they are all part of the original Hayes command set - but please check manufacturers documentation before use. Modern modems aren't even heavy enough to make a decent doorstop :)
HTH Syd