I wrote about ZoomBySite not working well with Safari 7 in ZoomBySite and Safari 7:
As it turned out, the problem was actually with the extension trying to look at the URL of the page, which was always empty when loading in an empty tab or contained the “wrong” URL when loaded in an existing tab (instead of containing the actual URL of page as had been the case in prior versions of Safari). The extension looks at the URL of the page in order to make sure that it’s sending the zoom level to the correct page.
As far as I can tell, the change that broke ZoomBySite was that this preloading is now also done when typing in a URL in the address bar. In this case, the page started loading before you finished typing the URL and hitting enter. When ZoomBySite checked the URL of the page, it was either the URL of the previous page (in which case unless the domain was the same, the zoom level wouldn’t change) or if the URL was being typed into an empty tab, it was missing (also causing the zoom level not to change).
There is a preference for turning off this preloading behavior for the address bar in Safari Preferences (Privacy tab -> Do not preload Top Hit in the background). I didn’t try turning this on to see if it fixed ZoomBySite, but it should have. With a well-behaved extension, it’s definitely better to leave this enabled as it improves performance.
The fix for this was to move the check the domain from the extension to the page. In this case, the page knows its domain and can ignore zoom messages that are targeted to a different domain.
Again, thanks to Apple for pointing out the problem with ZoomBySite and also for providing a suggested fix!