I can't offer any help here, but I've started having the same/similar problem with iCloud notes.
Basically, it seems the notes will sync DOWN from iCloud to devices, but not UP from devices to iCloud.
To take a very simple example to demonstrate the problem:
Assume I have an iMac, and an iPhone, both using the same Apple ID and iCloud ID (happens to be the same) and both set to use iCloud notes for sync'ing. Both devices are latest OSes and fully patched. They are updated as soon as updates are available for general release, and have never run any beta software.
1 - Create a shopping list in iCloud online using Safari on my iMac
2 - This list will now appear in the notes app on the iMac and on (say) my iPhone
3 - Go shopping with iPhone, tick a few items off the list, maybe add a couple of new items
4 - Get home and check iCloud online, the list is not updated, the new items are missing and consequently, the notes app on the iMac is not updated.
5 - Update the items online (iCloud) to reflect what's on the iPhone and the iMac's notes app will update
All of this WAS working until around sometime in November this year, but I cannot be more specific than that.
The Apple ID has not changed, nor has the password between this working and not working.
I enabled two factor authentication at the beginning of October, across all my devices.
As far as I've been able to get with this is that the problem is somehow related to the ID.
If I use a freshly created Apple ID/iCloud ID, the synchronisation works.
The new ID is NOT using two factor authentication, but the syncing WAS working with two factor authentication on the original ID.
I should also add that the ONLY iCloud area I seem to be having this problem with is notes, reminders are syncing fine in both directions.
I too use a gmail account as my primary mail account (in the mail app) but don't use the notes function there, although if I turn this on, it works fine in both directions across all devices.
At a bit of a loss on this one, so I've switched to using Google Keep for now.
Any ideas would be welcomed, but I suspect it's a "back end" problem at this point.
Cheers (and merry christmas)
Simon