I read this answer:
The only effect the new keyword has is to remove the warning. The purpose of getting the warning when not using the new keyword is to prevent you from accidentally shadowing the method when you really meant to override it.
But why not simply make it an error? If its intended to prevent accidental hiding, why not go all the way and make it a requirement and not just a warning, so that everything is perfectly clear?
Just to be perfectly clear, I know what the keyword does. Seems like the thought process of the compiler team was 'lets add a keyword because it's good to make things clear, but let's make it optional because it's not really that important to make things clear'...