Oh dang, I meant to add a comment mentioned why this is how it has to be. 

https://github.com/django/django/blob/1.5.1/django/forms/fields.py#L683 shows why: The list of fields is stored in both the field and the widget. `append` doesn't trigger the property setter, meaning it won't update the widget, but `+=` does.