'Scrum isn't perfect' is something I hear quite frequently, be it as an excuse not to stick to the few rules Scrum has or not to use it at all. The thing is though that no set of rules is perfect, but we're used to stick to them anyway. So why not do that with Scrum as well?
Let's start with an example of imperfect rules that we stick to: sports rules. I'm a Seahawks fan and I watch all of their games. American Football has a lot of rules and a number of people are present to make sure they are enacted during the game. While these rules were made up over the years and based on experience, they are never perfect for every single scenario. Does that mean there's a case to make for not sticking to the rules because they're not suitable? Or should we just accept that that's the rules are sometimes imperfect and roll with them? With sports, we usually accept them (perhaps not always happily, depending on which side you're on).
The thing with many Scrum implementations is that it has become acceptable not to stick to the few rules that Scrum has. Even though a team has usually made the choice to stick to them. The rules in Scrum were made up over the years and based on experience, just as with American Football. They were even changed over time when necessary (with the last modification being the addition of the Scrum Values), just like with American Football. But they are not adhered to, unlike with American Football.
What happens in American Football when you decide not to stick to the rules is anarchy. In Scrum that's no different: the benefits from Scrum will exhibit themselves best as long as the few rules it has are followed. Not doing that is a disservice to your team, your organization and your customers.
Scrum isn't perfect. It both has shortcomings and makes them transparent. But that doesn't mean we shouldn't stick to the rules. Accept the imperfection of the rules and benefit from Scrum.