The way I think of it:
/etc/frr/frr.conf is the saved config
vtysh -c "show running" is the running config
frr-reload.py wants to take the config file specified and make it the running config, not the saved config. frr-reload.py also does not make any attempt to have a new saved config in /etc/frr/frr.conf. Nor does it attempt to start/stop daemons that may need to run. This is done by other scripting, we expose frr-reload.py to allow for people to mix-n-match as they please. Having said that `systemctl reload frr` does attempt to do that, in that it expects you to put the new frr.conf file in `/etc/frr/frr.conf` and it will automatically load that file and start/stop the appropriate daemons for the new running config. This also has the effect of after running reload the running config is the same as the saved config. For me I just put the changes in /etc/frr/frr.conf and issue a `systemctl reload frr`
donald