No thoughts as to why, but I would put your dog on a leash. If he/she is chewing up the sofa, then he/she doesn’t get to be near it. If you misbehave, you lose privileges. At this point, it may be a routine of your dog’s. So disrupting him/her from it could help eliminate the habit.
My favorite at-home command is “place.” Someone comes over, my dog goes to his “place,” which is his doggy bed in the living room. This keeps him from jumping on people. As for on walks, I use the command “leave it” a lot. I pay attention to his ears (they give everything away). If I see his eyes on something and his ears perk up, I say, “Leave it,” and that seems to signal to him, “Yes, I see it too; everything is fine.” If I’m too late to say “leave it,” he definitely seems to bark and pull toward the dog/car/person. I think it’s because he gets protective and thinks that I’m unaware of whatever it is he’s barking at.