Well, the actual issue/problem should be obvious:
Suppose I have a GS or situation limiting town growth. I then can't play with the fund town button enabled as that disables/overrides the functionality of the former for any company with sufficient money. And obtaining sufficient money isn't hard at all. One house does not seem like a big deal until someone presses the button a hundred times.
Town growth does three things:
1) Build a house immediately
2) Expand town zones
3) Increase house building tempo.
I want to be able to get just , and 'forward' the information about  to a script and AI even and especially if the former overrides the house building tempo. For example the script could increase the growth tempo of a funded town with the goals met somewhat. As of now a script has no way to know the user pressed this button/did this action. Worse still, an AI has no way to know a human player is doing this apart from doing so in a roundabout manner, e.g. using the town's house count. Even then this is no 'guarantee' of giving the right answer (is the town funded or not?) as the build speed can be a number low enough (<= 5 days) that there's no real New-GRF proof way of certainly knowing.
Wanting to disable  is fairly natural. Novapolis solves it, for example, by changing the house build function in openTTD itself to build an empty tile if the goals are not met. But try the following; simply start a game in a desert map and give yourself a billion. You'll be able to significantly increase the size of a town in the desert without bringing this town water and food. Without effect  the only effect that happens in a game with script is  because  is overridden.
Example script way of doing it would be:
bool GSTown::IsFunded(int TownID)
We already have GSTown::GetRoadReworkDuration() for a script which is of questionable usefulness. The above however would be very useful.
Even better would be:
bool GSTown::EnableFunding(int TownID, int CompanyID, bool Enable = true)
Supply (id,true), turns on the fund town button. Supply COMPANY_INVALID to do all companies, and some ID to do a particular company to enable/disable.
I have a distinct feeling this may fall under Area Control as one of the actions though.
Example setting way of doing it would be:
Replace the 'Economy.towns.allow fund buildings' setting with a dropbox setting, including 'off' 'without free house' and 'with free house' options, or whatever would be a descriptive name.