I don't know if by the word "deniability" you mean something else, but I don't think the Double Ratchet protocol or any of its building blocks provide any kind of deniability security properties like deniability of message exchange, at least it isn't mentioned somewhere. But, plausible deniability for example may be achieved by somehow having the DH Ratche making steps at random intervals independent of the existence of messages to be transferred, of course appropriate padding will need to be orchestrated for it to work. The above is somehow depicted in the figures of the specification, like the following where the number of exchanged messages looks independent to when the next DH Ratchet step is made.
A few other notes, the Double Ratcher header message can be encrypted using the Header Key (HK) which is derived from the Root KDF Chain which is initialized with the Root Key which is provided by Key Agreement protocol (in the case of Signal this is the 3XDH [2]). For more information see p.22 of the protocol description [3] you mentioned.
Now answering your exact question :
Another way to put the same question is, is there a way for some adversary to know who B is, given that they can see their public key in the header (in that interval of time when B has not received a new DH public key from A)?
The public key that is used to initialize the DH ratchet is a fresh one and for the initialization or immediate step of the DH ratchet a fresh key is/should be generated. So from my understanding, a passive adversary that is tapping the wire, even in the case of the plain text header, cannot learn any useful information from any header, since of course DH is secure against passive adversaries.
As mentioned in the protocol description :
Message headers contain ratchet public keys and (PN, N ) values. In some cases
it may be desirable to encrypt the headers so that an eavesdropper can’t tell
which messages belong to which sessions, or the ordering of messages within a
session.
I think they are considering a passive adversary in this case. But in my opinion, encrypting the header should be offering more than this, e.g. it should offer some kind of security and integrity properties against active adversaries. But, expect much of the security load to be shifted to the Key Agreement protocol that seeds the Double Ratchet.
This paper [4] should probably be a really good read discussing all the above, focusing more on the Signal protocol. It is a long read and heavy on notation.