I've never noticed any practical difference between them, but a native speaker may be able to help you more.
반대편 -- the opposite side -- is related to 반대, meaning "opposite."
건너편 -- across from -- is related to 건너다, meaning "to cross."
맞은편 -- either across from or opposite from -- has a more complicated etymology. I believe it's related to a form of 맞다 that means "balanced." Quite literally, you're saying "on the side balanced to this one."
As you well know, we often have more words than we need for any given concept. I believe this is just one more example of that. It's a beautiful thing.