Why does Apache send 200 OK while Last-modified matches If-modified-since?
This seems to be an old bug, explaining why Header unset ETag
makes a difference.
Apache 2.4.0+ automatically appends the compression method name to the ETag (as seen in your headers), and prevents a 304 response.
Newest versions of mod_deflate support a DeflateAlterETag that can be used to control this behavior:
DeflateAlterETag NoChange