Form API: Hiding form option on node forces node to be unpublished
When you hide the form['options'] array you essentially set it to 0.  Which means the published field will always be 0 (unpublished).  Try hiding the fields with CSS or JS if you need it to be conditional.