How is difficulty enforced in the bitcoin blockchain? Is it through some sort of voluntary acceptance by miners or is it hardcoded into the bitcoin blockchain to not accept a block which doesn't achieve a given difficulty level?
Difficulty progresses in epochs of 2016 blocks. The difficulty for a given epoch is calculated from the difficulty of the preceding epoch and the difference of the timestamps between the first and the last block of the preceding epoch. The rules governing difficulty are part of the consensus rules.
Following the consensus rules is sort of voluntary but it's pointless not to. The network can only converge on a shared ground-truth by adhering to a set of shared rules. Generally, all nodes enforce those consensus rules. While you'd be free to create a block that doesn't adhere to the consensus rules, the block will be considered invalid by all other nodes.