The bug
As of 1.16, /setblock
and /fill
completely ignore the instrument property. It instantly applies the instrument that corresponds to the block below the note block.
How to reproduce
Simply stand on a stone block and type /setblock ~ ~ ~ note_block[instrument=bit]
in the chat. The instrument will be set to basedrum
rather than the value that was specified in the command.
Linked issues
Attachments
Comments

/setblock and /fill always reset the block's blockstate, this is also why you can't place flying flowers.
Can confirm in 20w51a.
Can confirm in 21w03a.
Can confirm in 21w06a.
Can confirm in 1.16.5.
Can confirm in 1.17.1.

Can confirm in 21w42a.

Can confirm in 1.18 Pre-release 2.

I don't see how this is any different from MC-31100; additionally, if you re-run the command on an already existing note block, it will stay the same, just like most of the blocks listed in that report.
This should be marked as duplicate, and the instrument state added to the list, rather than related.

Can confirm in 22w46a.

This seems to have been resolved in the latest snapshot (24w44a)
Can confirm in 20w46a.