If you really want to get to the bottom of this then you should probably log a ticket with Squiz Support to have it investigated, because I think there has to be more to it than meets the eye.
Chrome does have a certain characteristic where visiting a URL by typing it into the address bar and pressing Enter causes it to send “Cache-Control: max-age=0” headers - see https://bugs.chromium.org/p/chromium/issues/detail?id=179360. This will bypass Squid’s cache (unless Squid is configured to ignore it).
However, what the response headers in your spreadsheet indicate is that Matrix itself is sending non-cacheable headers with its response - notice that “Cache-Control” in the response is set to “no-store, no-cache, must-revalidate, post-check=0, pre-check=0”. An Expires header in the past is entirely consistent with this behaviour, because Matrix is deliberately sending non-cacheable headers. (You can verify this by appending _nocache to any Matrix URL - you’ll see exactly the same Cache-Control and Expires response headers.)
The thing is, though, Matrix doesn’t decide whether to send cacheable response headers based on either the client’s Cache-Control header or the client’s browser. So something doesn’t add up here, and it’s likely to need a closer inspection and more testing to sort out exactly what’s going on.