The RPM is just a target, the ECU will adjust things to try and hit that target but it's by no means guaranteed. If the IACV duty cycle is 0 or something like that and it's actually closing up fully then the idle is as low as it can physically go without reducing ignition timing. The problem can be something like the cold start valve in the IACV not closing fully, worn throttle shaft seals, torn rubber diaphragm in the brake booster allowing unmetered air, etc.