if the company uses the product under a different license, then making the change public would have to be negotiated. a consideration for the company among others is that the company thinks that the change would be a competitive edge they would like to keep themselves (although most often that is an illusion, and the extra cost of maintaining that branch is not worth the advantage. this is something the developer needs to communicate)
if the nature of the changes make maintaining a separate branch difficult then i would make it clear up front that such a change can only be made if it is incorporated in the FOSS version of the product.
alternatively, i remember from the early days of zope, one of the project owners told me that they would offer companies a 10% discount if they would allow them to make the change public.
Assuming that's a go, then decide how it should be paid for. You have the option of time based (hourly/daily/weekly rates) payment, where you should charge the higher of what's normal for your area or the potential client's.
Or a project-based payment. If you're new to this, and it sounds like you are, I would stay away from this. Done right, you can make far more than time-based billing, but it takes experience to get it right.
Never forget: profitable businesses have money and expect to use it to get what they want. Despite what other comments say, it's exceptionally unlikely that they expect you to do it for free. They expect a bill that's at least a month of a developer's fully burdened salary.
After you've gone through this experience, you may have a better idea if it's something other businesses are likely to ask for. If so, make sure you indicate on the site that customizations are available.