(This answers the second question about how to automate restarting BetterSnapTool. Since I haven't experienced the issue described and have no second-hand explanations, I can't answer the question of why this is happening.)
Here is a quick and simple AppleScript I whipped up that works for restarting BetterSnapTools:
tell application "BetterSnapTool"
delay 2 -- Wait for BetterSnapTool to close
tell application "BetterSnapTool" to activate
If you want to set this to automatically run every, say, 6 hours I think your best bet is to create a Launch Daemon using
launchd. A quick presentation of this approach can be found here. For more information, check the entry on creating Launch Daemons in the apple developer's library.
You said "low overhead", which I took to mean using only methods native to OS X. If you're fine with third-party software, though, this GUI application for
cron (the precursor to
launchd) scheduling seems promising (but I haven't tried it so can't be certain).