According to the OpenPGP card specification (v3.4.1), the TLV is a constructed one and therefore, should return its own tag, length and the actual content; also the tag F9 indicates that it is a constructed TLV. See chapter 4.3.2. I think it is pretty clear, that an empty KDF-DO should return "F9 03 81 01 00". A valid KDF-DO should return "F9 xx 81 01 03 ...".
GnuPG seems to expect a primitive TLV, without the tag and length, e.g. in scd/app-openpgp.c "buffer[2]" (line 2500 in v2.4.5) is checked against 0x03, which doesn't match for a constructed TLV. Please note, that the length might not be one byte necessarily.
Also from the spec, it is not entirely clear to me what is the actual content of the DO and what the card should handle. I.e. should the card add the tag and length, or will that be part of GnuPG. Esp. because it reads " The content of the KDF-DO is not evaluated by any card command, the functionality is handled completely by the terminal application." In any case, the content of the KDF-DO is wrong in my opinion.