Collider adjustments consider only the widget itself. It would be very expensive to iterate through children, taking their bounds into consideration as well.
You can do what you want by not having a widget, forcing it to do a child check:
GameObject (box collider, button script, anything else you want)
- UISprite (background)
- UILabel (text)
This won't make the box collider auto-adjust, however (as it's too expensive). But you can do it when you desire by using NGUITools.AddWidgetCollider(buttonGameObject); -- it will update the collider that's already there, or add one if there isn't.