The question of percent-encoding header values over the evolution of the OpenAPI specification has been a bit messy, and 3.1.2 adds to it again: https://spec.openapis.org/oas/v3.1.2.html#appendix-d-serializing-headers-and-cookies
This issue tracks tracking down the correct behavior, and possibly defaulting to different behavior based on the version of the OpenAPI document - to avoid making backwards-incompatible changes.
This might require extending OpenAPI Runtime to allow customizing whether to percent-encode header values or not (maybe can even be added to the Configuration struct), and try to use the correct behavior on the newer version of OpenAPI docs where this behavior was clarified.