It really depends on what goes into the save object.
If it’s pure user data (number of lives, inventory etc), then the player controller is the best place.
If the save object stores data relating to the world (level progress, enemies defeated etc), then the game mode would be the best place.
If it’s a combination of both, user and world data, then the game instance is the best place to access the save object.
Each class should only be accessed by objects which genuinely care about the class. For example, a widget designed to display the remaining lives of the player, shouldn’t really need to access the GameMode (used for rules of the level) to access the save object, to then retrieve data related to the user.
Sometimes, it might be worth having multiple save systems. It entirely depends on what data needs to be stored and the complexity of the application and the mechanics required to access such data.
Hope this helps.
Alex