This is not the same issue as before, and is not a fault with #revision but is related to i2c slots only.
We need to do some more tests as it is very obscure, but it looks like the readrevision internal value may not be refreshed correctly if you happen to run any i2c slot from 'within' another i2c slot. So we guess you probably had success with i2c slot 4 readrevision as it just happens to be the first external slot used, but actually it could be any of the i2c slots.
So this should work
-internal slot (readrevision ok)
-external slot (readrevision ok)
and this should work
-internal slot (readrevision ok)
-external slot (readrevision ok)
-internal slot (readrevision ok)
-external slot (readrevision ok)
but not this
-internal slot (readrevision ok)
-external slot (readrevision ok)
-external slot (readrevision not ok)
-internal slot (readrevision ok)
-external slot (readrevision ok)
The workaround is quite simple and actually the same as before, simply use the 'pokesfr $0E, revision_value' as the first line in your i2c slot. The #revision value in the external EEPROM is actually correct, but is not being copied into the $0E location correctly in this particular situation when the slot starts running, hence the readrevision command (peeksfr of this memory location) does not work as expected.