It took me a while but I finally figured it out.
There is a way to create more then 1 '1 per faction' buildings.
Assuming you've already built 1, go conquer a city of an opponent that has the building already built. If you raze that city, the game recognizes that you razed that building and will let you build it again.
I don't know what the code looks like internally for this, but it strikes me as a boolean instead of a comparison.
If so, I'm betting that its:
HasBrewery = true;
I would recommend a:
while (!HasBrewery) // for the construction selection
using
HasBrewery ++; //when added to build queue or acquired
or
HasBrewery --; /when razed or lost
adjust for whatever array mechanism you used to store the data on the city object.