They should. When using just a tag provider name, the system function asks that tag provider to do the actual query, which then constructs the full historian path from the tag properties on the spot.
Please elaborate. (Most small discrepancies are caused interpolation side effects when using imprecise time endpoints.)
I think you're correct. I was using endDate as now which was causing a discrepancy in the last (most recent) value, especially when I used aggregationMode='LastValue'. Once I started using past times, the values are the same.
Interestingly, if I use aggregationMode='LastValue' and endDate as system.date.now(). Some values come in as 0 for the historical tag path but an actual value for the regular tag path.
I recommend you never directly use the value from the now() expression function or the system.date.now() scripting function in your history query. Those functions return milli-second precision timestamps, and therefore shift the time period of the query away from the "natural" start and end timestamps people think they are going to get.
Timestamps should always be truncated to zero milliseconds, or zero seconds, or zero minutes, or whatever boundary makes sense for your data, before it is handed to a history query.