The following is not rigorous, but I believe it illustrates why the student's preferences should be true.
The relevant conditions can be reduced to the following. For every program with N slots, a student will be ranked either 1) in the first N slots, 2) in the remaining slots, or 0) not at all. If the student is in group 2, then the outcome is "conditional" - it depends how many of the program's preferred students matched elsewhere.
If we make a table of two programs' grouping for a given student, and designate a definite match with a capital letter, and a conditional match with a lower case letter, we get the following:
If student ranks A over B
B\A 1 2 0
1 A aB B
2 A ab b
0 A a -
If student ranks B over A
B\A 1 2 0
1 B B B
2 bA ba b
0 A a -
You can see that each table has the same number of matches and the same number of conditional matches. The only difference is that 4 of the 9 scenarios end with a preference for the program ranked highest.
Even if you have an oracle and can predict in which programs a conditional acceptance will succeed or fail, there is no advantage to switching order. If you change all the conditionals to either guarantees or no-matches, the total chance of matching still does not change. What changes is the chance of getting the school you want. If for example 'a'->'-' and 'b'->'B', then putting B first means matching with A in only 1 of 7 successful scenarios instead of in 3 of 7.
This should generalize to more than 2 programs. If B is the program being ranked higher than the true preference, then A stands for any other program which may rank the student.
The only way to maximize chance of matching is to maximize the number of programs applied for. (And attempt to maximize one's position on each program's ranking of candidates, but that's not a science problem).