General : always saving settings on close vs saving only when changed
I don't think this is even python related. In general you'll have something like this:

Load settings from file
Use and maybe modify settings in memory.
Write settings to file.

Detecting a settings modification would either introduce a change in 2 (keep a "changed" state) or in 3 (diff with the current persisted settings).
The first solution has little overhead (could be one boolean) but it is overhead nonetheless and it is in the "active" state of your program (not startup/shutdown). Also, it is additional logic that could go wrong (accidentally resetting the boolean to false on a copy for example).
The second solution has large overhead because you have to load a file, diff all the settings. This would actually slow down your code significantly compared to a simple "overwrite".
In the end you do all that work just to save one file write at shutdown, which is usually not the most time critical part of your application. If nothing changes you'll just rewrite the same file.
So I would not do it unless either storing a file is terribly complicated/slow or you really do not want things like "modify time" of the file changed unless you actually changed the settings. But these circumstances seem rather exceptional to me.
I am kind of beta testing a small python app - whenever the app is closed the settings are saved, even when I made no changes. I was wondering if this is general practice - sounds like settings should be saved only when a change is made but are there reasons (apart from the reduced complexity) pro saving settings always on close ?