A list of object names saved in a singleton for the player is probably the simplest solution.
For the sake of comparison, another approach would be to persist each of the coin objects and have them remember if they have been collected or not to determine if they are visible/interactive.
When save file size was of utmost importance (older consoles) the solution here would be a series of constants that bit-shifted a boolean value so that your 25 coins could be stored in 25 bits of memory. The coin and the save/load would refer to the same constant and they'd be defined in a central location.