Is this perhaps not the first time you use a fieldset for that model? Fieldsets are cached, so a second call will return the first fieldset.
The options ($_property[fieldname]['form']['options']) are processed before adding the field to the fieldset, so I don't see an immediate reason why the would not end up in the fieldset.
p.s. if you want to set data at runtime, it's better to overload set_form_fields() in your model. It's called by add_model() to create the fieldset. Have it call the parent, and use the fieldset returned to set runtime values on it. Then it happens automatically, without your controller having to call something...
This in response to the first part. As you say in your PS that overloading of set_form_fields is the way to go, I'll go with that. Thanks for your reply!