There appears to be no code to remove stale services in the current implementation, resulting in services staying in the list forever, even if they are gone. This may also prevent services that change their IP or port number but not name from being correctly updated.
Looks like this is being worked on in feature/add-disconnects branch, but I'll create the issue nonetheless to track the issue publicly.
Additionally, it appears that the VRChat client is also not removing stale services - during my testing I saw it sending out avatar parameter data to very much dead endpoints.