OK, I finally got to the bottom of this.
All I changed was to add: force create mode = 664 force directory mode = 775
When Windows creates a file, it would appear that it creates it with user and group write permissions, which (assuming create/directory mask are set to allow it) causes the file to be created with group write permission correctly.
Linux, on the other hand, seems to create a file with user read/write but group read only, which is again passed through to the server's file system, making the file unwritable to other users of the same group.
Using the above forces Samba to add write permissions regardless of what the client requests, problem solved!