Yes, that's the way it should be, in my opinion. Your parent class / parent binder should get notified for the properties they have (nested) bindings for. The changed property in that case is "children". You can already find out what child in that list specifically changed by registering an change handler on the nested binder in BWidget.
A possible solution to make your use-case more convenient would be to add a "cause" to the PropertyChangeEvent, which basically is a nested PropertyChangeEvent (i.e. for the child that changed). That would be clean as the parent would still receive the event for the property it has bindings for but could also dig deeper to find out more details (the cause of the change). The question is: Is this worth it?