I recentlly encountered the following problem with schema in a managed package (delivered by Zuora):
The field zqu__ProductRatePlanCharge__c.zqu__ProductRatePlan__c does not set the child relationship name. Thus, querying zqu__ProductRatePlanCharge__c and its child objects requires a very ugly query like:
select id, name,
(select id from zqu__product_rate_plan_options__r),
(select id from zqu__product_rate_plan_charge_options__r),
(select id from zqu__quotechargedetails__r),
(select id from zqu__R00N40000001mFVKEA2__r)
Zuora's response was to point out that "Unfortunately , based on the following Article , Custom Field > Child Relationship Name cannot be changed once it's released in a managed package."
I suggest that forgetting to name a child relationship is a common developer oversight, and the packaging manager should really require that these names be set before permitting a managed package to be released.