>>12582700people complain about the need for HMs in games prior to Gen 5, but I actually prefer HMs to "random people blocking roads."
It works so much better in that metroid-style system of "find path that you can't cross because you don't have an item, get item, come back and access path." It's completely logical and you know exactly what pathways you can access now that you have the HM.
But with the "random people blocking roads" alternative, there is absolutely no logical connection between the people moving out of the way and the event that causes them to move. "We're doing bridge maintenance! Please come back later!" Every fucking time I do anything in B2, I keep flying back to that area (as well as all the other meat wall areas) to see if any of them decided to move yet. There's no other way to tell other than just checking.
Of course, the downside of needing to give up 1 or 2 party slots for HM slaves fucking sucks. This problem could be solved by making all the HMs useful end-game moves (just like surf and waterfall) and making them deletable without the move deleter (you won't get stuck because you can always reteach the move). Alternatively, HMs are no longer connected to a specific pokemon. Once you get the HM item, you can use it in the overworld without having a specific pokemon learn it. Or you could teach HMs in a way that doesn't take up a move slot (but you can also teach them as in-battle moves if you want)
Those would all be good solutions, imo. I just hate having random fucking people blocking roads and you have no idea how to make them move 99% of the time.