I checked again the solution proposed and now I'm sure this is the way to go. In theory if a composite component class implements EditableValueHolder should not allow f:validateBean to take effect inside its body, but if that so, it is not expected any other UIInput component should be into its body. f:validateBean is very special, but it has some problems like the one described in MYFACES-2528 that suggest the only way to fix them is create a validator that extends from BeanValidator, but it should work the same.
Composite components usually are used to group components and "derive" more components. f:validateBean is used to fill the gap between JSF and JSR-303 bean validation, so really it try to "decouple" validation and move it from the view to the managed beans. It works as a "controller" for validation, so apply it across composite components does not cause any problem at all, because at the end the validation rules are on the managed beans. In f:ajax case, it is clear the client behavior applies to the composite component, not to the content.
For other specific validators that does not has a similar intention like f:validateBean should not use wrap mode. But it is not really necessary to enforce that condition, instead, this should be let to the developer of such validator, but the jsf implementation should just allow it.
If no objections I'll commit the proposed patch soon.