That sounds like a perfectly valid explanation, saying that in the admin console, you don't ever see the displayName value, you see Full Name.
Because, displayName and Full Name are not the same thing.
The API documentation says that the Full Name value is read only.
https://developers.google.com/workspace/admin/directory/reference/rest/v1/users#UserName
Testing with GAM.
$ gam user kim print fields name
primaryEmail,name.givenName,name.familyName,name.fullName,name.displayName
kim@mydomain,Kim,Nilsson,Kim Nilsson,
$ gam update user kim displayName "Super Cool Dude"
User: kim@mydomain, Updated
$ gam user kim print fields name
primaryEmail,name.givenName,name.familyName,name.fullName,name.displayName
kim@mydomain,Kim,Nilsson,Kim Nilsson,Super Cool Dude
$ gam update user kim fullName "Really Nice Guy"
Command: /home/kim/bin/gam7/gam update user kim >>>fullName<<< "Really Nice Guy"
ERROR: Invalid argument
Note that I initially don't have a displayName value, because it's not a default thing.
It does work, though!

In the Investigation Tool / Admin log events, I can also see that's exactly what happened, but I can't see that displayName anywhere in the admin console.

So, you should just let GCDS do it's job, and the preferred name should be visible in the directory and Workspace services.
Do note that you will have to clear out the old contact for all users, as a contact overrides any information from the Directory.

Here's the GAM wiki on how to do that.
You have to do it twice.
Once from My Contacts.
https://github.com/GAM-team/GAM/wiki/Users-People-Contacts-Profiles#example
Once from Other Contacts.
https://github.com/GAM-team/GAM/wiki/Users-People-Contacts-Profiles#delete-user-other-contacts
--
https://wheretofind.me/@NoSubstitute