Hi.
So the objective of these 2 metrics is to give you the absolute unique visitors per the date range for the selected dimensions. These values are not additive.
Today we have 2 calculations of this metric. You can explicitly see them in the custom reports selection for v5. In the API we expose ga:visitors which automatically maps to either calculation depending on the query.
For complex, ad-hoc, queries, GA goes through each hit in all sessions within the date range and counts the unique occurrences of the visitor's id across the selected dimensions. While accurate, this uses memory and tends to be slow. But we can give you unique visitors across any combos of dimensions, ad-hoc, which is nice. This value was only recently added to the product.
For any simple query which only uses the date dimensions, the method above is slow. In this case each session has the time stamp of the first hit in the session as well as the timestamp of the first hit in the previous session. So as GA goes through each session, we can increment the visitor count if the previous timestamp is outside of the start of the date range. This is fast and doesn't require lots of extra memory. But it also relies on the browsers timestamp....which can be off.
All GA's date ranges are based on the time the hit was collected by GA, server time. And this second calculation relies on the browser time stamp. When these don't match, this count can be off and you see difference between metrics.
-Nick