Currently the #type => "checkboxes" element does not support an option in the #options array with the key 0. This introduces the need for a quite complicated workaround in modules/field/modules/options/options.module.
The reason for this restriction is due to confusion between 0 (numeric) and "0" — the former indicates that the underlying checkbox is not checked). AFAICT this restriction can be avoided if we are careful about casting to string when needed.
This patch adds a few casts here and there and removed the $zero_placeholder stuff from the options module. The patch includes parts of the patch for #319483: FAPI checkboxes and radios need strengthening for XSS.