You have several layers of configuration to line up, and it can be done to make administration quite simple.
As Abhishek suggested, setting the setgid bit for a directory is quite helpful because it makes the directory's group ownership inheritable by default for newly created files and directories.
Copied files retain their ownership, however, as you have observed. For re-setting group ownership, the incrontab approach is good. A more modern approach would use a systemd .path file to monitor for modifications and a corresponding .service file to run chgrp.
To address your question about configuring to support many project groups, consider the following:
First, remember that Samba only provides authentication and depends on file system permissions and host user accounts.
Set umask to 0002, which allows group write permissions by default.
Create a host account for each user:
sudo useradd andreas
sudo useradd beatrix
sudo useradd ciela
Create a data "super-user" distinct from root for administrative purposes:
sudo useradd oberst
Create a group for each project:
sudo groupadd hund
sudo groupadd katz
Create a data directory for each project, set permissions (including the setguid bit) and ownership. The following set the setgid bit (2), give full permissions (7) to the super-user oberst and the specified group, and give no permissions to others (0), so non-group members can't read, write, or execute:
sudo mkdir /srv/hund
sudo chown oberst:hund /srv/hund
sudo chmod 2770 /srv/hund
sudo mkdir /srv/katz
sudo chown oberst:katz /srv/katz
sudo chmod 2770 /srv/katz
Add users to groups:
sudo usermod -a -G hund andreas
sudo usermod -a -G hund beatrix
sudo usermod -a -G katz beatrix
sudo usermod -a -G katz ciela
Add users to Samba:
sudo smbpasswd -a andreas
sudo smbpasswd -e andreas
sudo smbpasswd -a beatrix
sudo smbpasswd -e beatrix
sudo smbpasswd -a ciela
sudo smbpasswd -e ciela
Edit smb.conf to create shares. Read-only=no allows write access and browsable=no prevents others (i.e., non-group members) from browsing the share. Note the "@" prefix in the valid users directive, which defines access by reference to host groups:
[hund]
path=/srv/hund
read only=no
browsable=no
force group=hund
valid users=@hund
[katz]
path=/srv/katz
read only=no
browsable=no
force group=katz
valid users=@katz
Now (perhaps after a reboot), /srv/hund can be accessed (read/write) by andreas and beatrix but not ciela, and /srv/katz can be accessed (read/write) by beatrix and ciela but not andreas.
All that is necessary to change a user's access is simply to change group membership using usermod.
Of course, you also should configure passwords for host accounts and Samba accounts.
Hope this is helpful.