In my experience, they are quite reliable; most bugs have been traced to code other developers have written, rather than any issue with the shared variables themselves.  Couple of points: 
1  "Important" (regularly updated, critical) shared variables are read using the DataSocket API, where I connect to the SV engine on the RT target, and then monitor the status of my connection.  If it goes down, I reconnect, kind of like a TCP loop.  The read values are then Q'ed. Prior to implementing the reads in this way, I would get SV's go down when the RT target was being rebooted, and they wouldn't "reconnect" without restarting the HMI (PC) application. 
2  Once connection is re-established, the other static Shared variables seem to connect without a problem. Runtime for built executables (between reboots) can be 8 or 9 days. 
3  The Shared Variables are hosted on the RT target and number about 70 or so;  some are complex clusters, others are SGL's, DBL's, and even an IMAQ image flattened as a string.  Some values are buffered, others are not. 
Here are some screenshots: 
 
 
 
 
Neville.