If you look at the source code for the Checkbox helper you'll see a comment that explains it. It looks like this:
if (inputType == InputType.CheckBox) {
// Render an additional <input type="hidden".../> for checkboxes. This
// addresses scenarios where unchecked checkboxes are not sent in the request.
// Sending a hidden input makes it possible to know that the checkbox was present
// on the page when the request was submitted.
...
This is because the W3C specification says that, "When a form is submitted, only "on" checkbox controls can become successful." (Successful being their term for the value submitted). The hidden field ensures they are submitted, regardless of whether they are checked or not. If you don't want this behaviour then simplest way is to render the HTML yourself and don't use a helper.