I generally run with the Betas. However, I've been thinking about what might be a couple of gotchas related to versioning in general though:
First, since the SF DLLs get installed to the GAC, once upgraded, if you checkout your production branch to do a hot fix, I think your going to get the latest SF DLLs, as VS pulls from the GAC first. So, while your hot fix might be just updating a single method to fix some logic, you might suddenly be updating much more than that (e.g. rebuilding all your BOs).
Second, and related to the first item, if they update the RBS db schema, then again doing a hot fix for production would require updating the security tables. Using the DDT, this is pretty painless.
Third, if they updated ES, again you might have to update ES. This typically means unzipping the new files on the server, so again pretty painless.
So, the first is the one that concerns me the most, since it seems hard to easily reproduce an older version. I think you'd have to have the SF source as part of your source tree, so you always have the version of SF synched in source with any specific version of the product. If you needed to get back to exactly that version, you'd likely need to uninstall SF, then build SF from the source, letting it put the DLLs in the GAC and I think you'd be good to go. I'm still not a 100% clear on how the whole .NET versioning thing works, so it might be better or worse than this...
Now, if for any product, your user base is keeping updated with the latest versions you release and you don't need to support older versions, I doubt any of these will ever be a problem (or very much of one). However, I wonder about the consultant that might have to support a SF 1.6.6 version of their app five years from now.
Again, none of these are really specific to beta, but more to versioning in general. Any thoughts on this?