These forums would be more useful if people didn't repeat theories as fact.
The following is known:
- You're meant to set POPULATON_CAP to 0 if you don't want migrants.
- You may still get some. This is a bug.
There is no evidence of a soft cap. People just get upset when they still get some migrants and start making stuff up. To my knowledge, nobody has done any proper (controlled/repeatable) testing.
One theory is that the pop cap uses census data returned by traders (so if you never have traders it will never update properly). I don't think anybody has tested this either.
Another theory is that migrant waves have a travel time from your capital, and that waves which have been generated and are en route will still arrive, even if you've lowered the cap (personally I think this is wrong - you still get migrants with a pop cap of less than 7 in a new game where you would assume no migrant waves have been generated yet).
From personal experience, if you set the cap to 0 before starting a game you will still get some migrants, but nowhere near as many as you should get (I get the occasional wave of 1 migrant who promptly gets processed by my Welcoming Machine).
There are a lot of bug reports regarding POPULATION_CAP in the bugs forum as it is not working as intended. I'd suggest reading all of the bug threads (search for POPULATION_CAP) for useful insight. Some random comments from Toady from various threads:
As I said in the other thread, I'm going to need a save to fix this. It's not supposed to push you over unless you have noble immigrants -- nobles and their families come regardless of the popcap. If you are getting waves of regular immigrants that push you over the cap something is broken, and it's something that I can't reproduce.
I'm never able to reproduce these pop cap problems. I might have a chance if I've got a save and your init file. The caps seem to check pop correctly for me.