Do you have 'Tools | Application Options | General | Implement nesting of conditional build rules' unchecked? If so, it needs to be checked (the default) for build rules to apply to child steps.
Here is a similar test that works as expected here. The first build has this result:
8/12/2004 10:47:40 AM: --------------------Starting Build: 'exists.bld'--------------------
8/12/2004 10:47:41 AM: Building project step 'Check for folder'...
8/12/2004 10:47:41 AM: Building project step 'make dir'...
8/12/2004 10:47:41 AM: Building project step 'msg'...
Building...
8/12/2004 10:47:41 AM: Build successfully completed.
Rebuilding the project has this result:
8/12/2004 10:47:46 AM: --------------------Starting Build: 'exists.bld'--------------------
8/12/2004 10:47:46 AM: Building project step 'Check for folder'...
8/12/2004 10:47:46 AM: Step skipped
8/12/2004 10:47:46 AM: Building project step 'make dir'...
8/12/2004 10:47:46 AM: Step skipped
8/12/2004 10:47:46 AM: Building project step 'msg'...
8/12/2004 10:47:46 AM: Step skipped
8/12/2004 10:47:46 AM: Build successfully completed.
Compare this with what you're doing and see what's different. Also be aware that using Rebuild Selected/Test ignores build rules:
http://www.kinook.com/Forum/showthread.php?threadid=240