That's of course true, but it's more conciled (then, say, with do file). I'm also quite sure I'm sometimes using modules that use string eval somewhere.
Also, what I hate most is when eval is used more frequently then it should be, like evaluating the same code over and over again when it would be enough to call it just once to compile a subroutine, and require typically avoids this. (Not all uses of eval I hate fall into this category, I also dislike when eval is called just once per run unneccesarily, partly because it makes eval more known and people will use it in worse situations.)