Every time the player touches a coin which could be every 1 - 2 seconds and even less, it would send this data back to the player every time. I would prefer to do this as it is the way I set up my data updating on the client side (whenever a value changes, it returns back to the client, I am using DataStore2 for this). However would it be wise to do this? Would I be hitting any data transfer limitations?
Another way is to fo a lazy world state update periodically. Just to say hey every once in awhile you get the big table. But stay clear of doing logic on recieve.
Instead use a message bus methodology and let the remote drop off the data into a module and then let the things looking for it poll the model for if something they want is there.
This keeps your messaging centralized and vastly reduces the number of remotes you need