The "fi" thing arose during the Algol-68 process, which Steve Bourne participated in, which is why he put it in his shell. (He would have put "od" there too to terminate "do" if it wasn't already used for a hexdumper.) You also find it in, for example, Dijkstra's
Discipline of Programming.
Semicolons were widely used as statement separators in Algol-family languages, but in Easy they seem to be statement terminators, so they are apparently like C rather than like earlier Algol-family languages such as Pascal.
Pascal also had the "program" thing. I'm not sure if earlier Algol languages did?