I noticed there is a comment in the source about this behavior:
# TODO: why are we merging `input_html_options` and then making some of the irrelevant ones `nil`?
# Seems like we should be selectively including from input_html_options (a whitelist) instead of
# excluding (blacklist).
Whitelist only `for` and `class` attributes on BooleanInput label.
I can't find a decent reason to be merging with `input_html_options` and fussing around with it like it was.