Just to pitch in; these are dependent on how many cells are active at a given time, not directly with the column or cells per column counts.
Each time I play with the column and cell counts, I experiment and update these values accordingly. After some time, I started initializing these parameters with the approximate active cell count at a given state to save some time. So 2048 with 0.02 sparsity would produce 40 active cells in a predicted scenario (one cell active on every column). I kind of set 0.5 times the active cell count as the activationThreshold (20) and 0.5 times the activationThreshold as minThreshold (10). These are of course soft values that seem to work in general cases for me.
maxNewSynapseCount should be lower than the number of bursting cells in any case to be a practical limit. At any time, there cannot be more than "activeColumns.size() * cellsPerColumn" connections for a cell to make on the previous activation. I generally set it to some value below the active cell count in a predicted scenario. The reasoning is we should sub sample, not form connections to the exact previous activation (40 cells). The learning happens as long as maxNewSynapseCount is larger than minThreshold. If it is smaller than that, a newly created segment would not be activated in any case because the synapse count would be below the activationThreshold and it would not be a matching segment because it has lower synapse count than even the minThreshold. For a segment to get more synapses on itself, it should at least be the matching segment which is dictated by the minThreshold. So if you set this value lower than minThreshold you would create new segments infinitely with no predictions. It happened to me.
maxSegmentsPerCell is something that I set to prevent producing infinite segments because of a bug or inconsistent parameters. Normally you would not need a cap on this because this number should converge in time in an ideal scenario unless you have massively complex/inconsistent data.
maxSynapsesPerSegment should obviously be higher than the activationThreshold for any cell to become active. It should also be higher than maxNewSynapseCount or else it would override maxNewSynapseCount.
Sparsity and column/cell counts dictate the number of cells active at a time, which dictates activationThreshold and minThreshold. Then you set the max values according to these.