Explain the difference between an interface and an abstract class, and provide a real-world scenario where you would choose one over the other.