Yeah this is a weird detail inherited from the OST1 core that we kept to keep things compatible but will probably kill later.
My recollection is you hold valid until header_ack, at which point you don't need to hold the values for your other request wires, but you need to keep valid held until _ack? Or maybe it's the other way round... It should be possible to infer from the Ariane or BlackParrot (in open PR) L1.5 wrapper code. There's basically only one or two cases where the precise timing causes an issue if you just hold val and your wires until ack, and one of those that I recall is for using the store interface to send interrupts on the NoC.
Thanks,
Jon