In the UDP cases, we just drop the DNS request, since there is no useful DNS response for rate limiting. Returning a NODATA response with the TC (truncated) flag set is useful for amplification limits to redirect legitimate clients to TCP and protect against reflection attacks, but when there are simply too many queries, moving the query load over to TCP would be counter-productive. Letting the query time out will naturally reduce the load, whereas returning a SERVFAIL error for a query to 8.8.8.8 would often result in an immediate retry on 8.8.4.4 or an IPv6 address (or worse, cause the entire resolution to fail).
For TCP and DNS-over-TLS, amplification limits don't apply, but the remainder of the logic is essentially the same. Since Google Public DNS can respond to queries on a TCP connection out of order, clients should be able to send other queries without waiting for the response to a previous one.