>>36997058>>36997549Basically, what happens is that every time you move to a new area, the wild Pokemon encounter table gets updated. If you move to a city and that has no encounter data, nothing happens and the old encounter data is retained, which is fine because there aren't supposed to be encounter tiles in cities anyway.
When you start the Old Man tutorial, your display name is changed to Old Man. Your actual name has to be temporarily stored elsewhere, and the programmers chose to use the encounter table to store it since it doesn't get used in Viridian City anyway and it'll be overwritten as soon as you enter another area... except if you fly to a city which has no new encounter table to overwrite it with.
So, the actual bug is that the strip of shore in Cinnabar just happens to be marked as encounter spaces inside the city's area, and as such you don't actually cross the area boundary and update the table to Route 20's encounter data. Therefore the game will use whatever existing encounter data it has in memory. You could use, for example, one of the Safari Zone tables. If you do the Old Man tutorial, the table gets corrupted with your name, which is data that doesn't necessarily correctly map to real Pokemon, resulting in Missingno and other oddities.
The only reason this doesn't work in other cities is because they don't have encounter tiles you can reach.