I do a lot of software based work and very privacy contious. I have multiple machines for specific tasks. Managing the data between them all can be quite a challenge. This is where syncing is helpful. With the right design, I can share specific folders like ones that contain my password safe (keepassXC) to all machines while not sharing data related specifically to my task. For example, hosting docker containers. I wouldn't want all of my PCs to have scripts for my docker images. This took a bit to fully figure out. Through my experiences I have found some huge cons and work arounds.
To review a bit, Nextcloud is a web server that can help share data between users. It also has clients that can be installed to sync data between the server and the clients. You can share folders to other users to sync those files to those user's machine.
As of today, there are some issues with this syncing. First one is that if a user A shared their files with another user B, that user B will immediately start downloading the files whether they want them or not. There is a feature you can enable to prevent automatically downloading if the filesize is too large. This helps mitigate issues but not completely. If someone really wanted to mess with others they could create shares up to that limit and simply spam the targeted user forcing them to download a ton of files just under that limit... I think the fix to this is to default to always asking the user if they want to accept a share and what to do with it, or even simply accept it but don't auto download.
Another issue I have found is you do NOT want to share directories or files that change frequently. (I can't adjust the sync delays) For example, if you are running a portable application or docker container in a share, it is constantly modifying files this makes the client sync application freak out. If you are trying to share applications to other users it can easily corrupt those files. This means you also don't want to sync a "work directory" where you may create python environments and download nuget packages etc. What I do is create a local directory for those things then copy + paste the completed files into nextcloud. This situation is probably better handled using git and not nextcloud sync if you are writing code.
My last complaint is similar to the first, but a bit more specific. There is a situation where you share a folder for my example I'll say "Home Records" it's the top most level, so if I shared it and created a new sub folder called "Purchases" that change will be pushed to all users I have shared the HomeRecords with. I suppose this is expected, but if I loaded that Purchases with 500GB of data no matter the setting the other users have it will push those files to everyone who is holding this top most share. I honestly don't know how to handle such a situation since most cases it is expected. Ultimately, being able to reject a share could be very helpful feature.
Now we have some understanding of a few big issues, the way I was able to get around the first problem was to use multiple users to my benefit. I can't say for computer A to hold specific folders and not others. Sure, there is the option to tell the client some kind of paths to ignore much like a gitIgnore file, but it isn't the easiest thing to figure out. If I move to a new PC I'd also have to put that back in place. The better option is if I could register "devices"/computers/clients that I own and choose which folders to share between them. Since this is not possible, I created one user for me, and sub users for each machine I have. This allows me to share some folders to specific machines without sharing everything to all or dealing with really annoying client settings. The system looks like this...
The idea is that all files will be created on the Main User's account. From there, I can share the folders to the specific machines I want those files to be stored on. In the rare case I need to move files between say my laptop to my data machine I could create a folder on my laptop and share it with the data machine directly, but I tend to avoid this because it adds a lot of uneccesary complexity.
Something to note is that no computer should never have a client logged into the main user account. That's just a central contifuration point. You can log into it using a web browser (to create the shares), but never have the installed client application syncing files from that accoune. The reason for this is because it can get messy down the road and you'll be syncing all the files from that account. The only reason I can see to do that is if you want a full backup on another machine.