How can I keep my program groups on desktop?

It took me a while, but I guess I found what you are looking for. I looked for something similar but somewhat different, however that solution works for us both.

You need to create a dconf-Database. To do that, you need access to the folders located in /etc/dconf/:

Create the database by creating the following file:

sudo nano /etc/dconf/profile/user

with the following content:

user-db:user
system-db:local

This shows gnome, where your settings are stored.

Next define, what your profile looks like. To do so create the following folder and file

sudo mkdir /etc/dconf/db/local.d
sudo nano /etc/dconf/db/local.d/my_style

and put something like this in:

[org/gnome/desktop/app-folders]
folder-children=['myfolder']

[org/gnome/desktop/app-folders/folders/myfolder]
name='Preferences'
apps=['app1.desktop', 'app2.desktop']

[org/gnome/shell]
app-picker-layout=[{'firefox.desktop': <{'position': <0>}>,'myfolder': <{'position': <1>}>}]

Then put a lock on these settings to keept the changes (however then they cannot be changed)

sudo mkdir /etc/dconf/db/local.d/locks
sudo nano /etc/ dconf/db/local.d/locks/mystyle

with the following content:

/org/gnome/desktop/app-folders/folder-children
/org/gnome/desktop/app-folders/folders/myfolder/name
/org/gnome/desktop/app-folders/folders/myfolder/apps
/org/gnome/shell/app-picker-layout

Finally reload your dconf:

sudo dconf update

This will keep the changes alive for any user logging in. If you want to keep the changes only for you, make sure the environment variable DCONF_PROFILE is set to a profile defined by you. Then you can skip the first step and just name the db like your DCONF_PROFILE. (local is assigned to all users here. You need to skip the step system-db:local to make these changes not for the system, but only for you. Setting the DCONF_PROFILE variable should happen right after logging in to have any effect.)

If you are not allowed to do that on your system, you could run a script on startup doing exactly that.

gsettings set org.gnome.desktop.app-folders folder-children "['myfolder']"
gsettings set org.gnome.desktop.app-folders.folders.myfolder name 'Preferences'
gsettings set org.gnome.desktop.app-folders.folders.myfolder apps "['app1.desktop', 'app2.desktop']"

gsettings set org.gnome.shell app-picker-layout "[{'firefox.desktop': <{'position': <0>}>,'myfolder': <{'position': <1>}>}]"

However I do not know if the autostart-programs for ad-users are stored ;).