That is actually the trend over recent years. Java, for example, had its genesis in being a "safer C++". In part because programmers expect things to "just work" (i.e. they don't take the care to avoid using constructs in an unsafe manner) and in part - like gets() - the constructs are inherently unsafe.
Using gets() is all well and good if you can trust the user of your program not to do something silly that overruns the buffer length. In the real world, programmers have to be paranoid and assume the user of their program CANNOT be trusted to do the right thing. Teaching students otherwise is teaching them habits that will be frowned on when they go for a job.
However, it is usually better to use some means that allows the programmer to prevent a buffer overrun. fgets() does that, without too much ado. Although there are trade-offs in its usage - extra care is needed to properly handle lines that exceed the buffer length. Not difficult, but care needed. In practice, the code is often less complicated by using fgetc() in a loop, if your code needs to read multiple lines.