Just create an xarchive using your certificate and provisioning profile and pass it to the client
Client can open the xarchive using xcode and they can resign using their distribution certificate and provisioning profile and publish it to appstore

P.S:
Make sure client has same Bundle Identifier added in app id of member center
Make sure Client’s provisioning profile reflects your project capabilities i.e push notification etc
In case of entitlements the client has to go inside the app and change the entitlements manually.
The file that they have to open in a text editor is
archived-expanded-entitlements.xcent
and change the PREFIX with their team id which can be found here
<key>application-identifier</key>
<string>PREFIX.yourappBundleID</string>
<key>keychain-access-groups</key>
<array>
<string>PREFIX.yourappBundleID</string>
</array>
And its better to ask the client to make sure get-task-allow is false just in case if you had signed your xarchive with development signers
<key>get-task-allow</key>
<false/>
The same is true for APNS
<key>aps-environment</key>
<string>production</string>
FYI:
Lots of companies I know follow this process due to their security guidelines