The only explanation we can give is that Hearthstone is sensitive to internet connections that are slow, laggy, or otherwise have performance issues (even if only intermittently).
And maybe your connection is just fine for other applications on your computer. If your web browser takes a few extra seconds to load a website, or if a YouTube video has a bit of buffering during playback, who cares?
But a real-time two-player game is a different beast. Your opponent shouldn’t suffer because you have a bad connection.
I’m guessing that Hearthstone maintains some sort of “heartbeat” connection to the server, and if it doesn’t hear a heartbeat every few seconds, it assumes you have lost connection.
Maybe the underlying problem is the particular route your ISP uses when communicating with Blizzard. Have you tried running a ping or traceroute command to the central Hearthstone server?
Have a look at this thread in the tech support forum: