David
I believe that the first point from Anas is the most important reason that you would need GRE tunnels. Support for multicast, especially multicast as used by routing protocols, is the most common reason for using GRE in my experience. His second point, about support for non-routed protocols, is valid but from my perspective is becoming less common and the transport of non-IP protocols is quite rare these days.
I would suggest that his third point about connecting two similar networks is frequently given as a reason to use GRE but is not an appropriate answer to your question. If you need to connect two similar networks over a different network GRE is certainly an option, but an IPSec tunnel is also a viable option to accomplish this.
I would suggest that there may be at least one more reason why you might choose to use GRE with IPSec. With GRE you get an interface, and if you configure tunnel keepalives the tunnel interface will go down if traffic is not going through the tunnel successfully. So it provides an easy way to monitor whether your encrypted traffic is working or not.
HTH
Rick
HTH
Rick