Actually, the limit is 255 esp/esm files. Your explanation is correct, but the engine reserves FF for the savegame, thus having 00-FE for esp/esm files. That is why all dropped items etc. (which is created during play and stored in the savegame) gets formID FFxxxxxx.
That's true. The savegame takes up that last one. Essentially it is a hidden/persistent file. Leaving just 255 to play with. Obviously Oblivion.esm takes up another (there are actually a couple of alternative base files, but they are for testing purposes etc. - but Oblivion.esm for any regular game load order) leaving that total of 254 for the player to fill as they deem fit.
As said already, this means a hard limit of 254 mods. Less for mods with multiple esp/esm files (as the limit is number of files, not mods of course). But also more with merging files into the bashed patch.
Although there is also that upper limit of the number of files (esp, esm, BSA) in your data folder, of 300-400. This doesn't kill your game outright, but instead means that on any given load some simply will not work (missing meshes etc.) "Ghosting" merged files can help there as well (another fine Wrye Bash feature.)