Pi-hole already handles the resulting HTTP 304 Not Modified responses, but only the webserver would know why it decided to send that 304 - it may be based on any set of information from the client request headers, not just an ETag value.
ETags are a server-side feature: There won't be one to start with if the webserver that delivers a blocklist wouldn't provide one, a webserver implementation may consider client or connection specifics when generating an ETag for a given entity, and it is also that webserver that would handle ETag comparison when deciding whether it should return the requested resource or a HTTP 304 instead.
Note that the response you seem to quote, from some undisclosed source, would again be produced by the web server.
I cannot know whether you would send those.
As mentioned before by yubiuser, Pi-hole isn't currently sending an ETag value, nor would it store one in its database for that purpose. Pi-hole is considering the Last-Modified header option, though that doesn't work for GitHub - you would have found this referred to as heisenbergCompensator upon scrutinising the full code as linked by yubiuser.
When considering to send an ETag, if you are using curl for retrieving blocklist contents (as Pihole does), you should be aware that ETags may not be uniformly supported by an actual curl version of Pi-hole's host system, which would cause curl to fail (e.g. none of my Armbian or PiOS machine's curls would support --etag-save).
Also, as mentioned before, server-side ETag calculations may consider non-resource-related elements, which would render them somewhat useless for Pi-hole's purposes.
To give an example: If a server hosting a blocklist would calculate an ETag to reflect some client session state or to be used as identity match of a server's transient in-memory cache, then Pi-hole's weekly gravity update may never see a 304.
Dealing with this correctly may require to test for specific versions of curl, and it would significantly impede a uniform way of retrieving blocklists.
The code ultimately may have to be changed to treat each blocklist retrieval individually, posing the additional question of how to acquire the respective necessary sets of parameters.