I have the following UI Primefaces snippet:
It's because composite components inherently extend from UINamingContainer (like as <h:form>, <h:dataTable>, etc) and thus prepend the client ID of their children with own ID.
To achieve your particular functional requirement, first give your composite component a fixed ID:
<ez:growl id="growl"/>
Then embed the <p:growl> in the composite component's implementation in a plain HTML container element like <div> or <span> with the composite component's client ID as element ID:
<cc:implementation>
<span id="#{cc.clientId}">
<p:growl />
</span>
</cc:implementation>
Now you can just use update=":growl" the usual way.