Maybe this article sheds more light on the question:
As far as I read the article that is expected behavior - if you delete a table and immediately add it again you don't need to re-compile. An interesting test would be if the same is true when you add some other tables before you re-add the deleted table so that it might get a different table number.
I am very sure that the table number etc are not part of the CRC calculation. CRC is there to ensure you are not running rcode against a different table definition. If the table is the first, the second or the last has no relevance. The table
number is not part of a df, the field position (actually the r-position)
is - that's why you have the option to include this when dumping a df to ensure you get a CRC-compatible table when recreating the table elsewhere. Note that you only need r-position if you are deleting fields.
initial field A B C would get r-position 1 2 3 (or something similar)
delete field B and your updated database has A C with r-position 1 3.
If you were to create a new database based on the updated database (without r-position) you would end up with A C with r-position 1 2 which has a different CRC.