This is because R borrows a lot of syntax from S. When R came out, statisticians were using S, so it was natural to make it like this. If they went another way, you'd get statisticians in mailing lists 20 years ago bemoaning how its so much not like familiar S, rather than regular old programmers 20 years later today who bemoan that R isn't like familiar python like what happens on HN whenever there is an R thread.
I mean compared to other languages these sorts of quirks might seem like big deals, but they rarely come up. You see that error, you copy paste and find a stack overflow thread explaining it, you know what to do next time and move on. R is certainly no C.
That book isn't so much about R weirdness. It's more about teaching data scientists to consider the implications of practices like copying a huge table in memory on every loop iteration.