"If this is the case, you don't need the side deck to know if you need a card like Retribution before you play against that particular opponent"
My point not about picking a deck to beat your opponent's, but about making a deck copying your opponent.
"When your opponent see your whole deck, it could change a lot. Say if I have a tower building deck and I have zero card that deals any damage and my opponent sees it right away and will be able to play no cards to build his/her wall, on the other hand it was possible for him/her to waste a/few turn or resources to build on wall if my deck is hidden"
Perhaps, but if your opponent see that you have zero attack cards, or attack oriented cards in your opening hand, even if they haven't seen your deck, they'd be pretty stupid to build wall. That is an argument for poor strategy by bad players, not allowing for more refined strategy for more experienced players.
"Or, say I have cards like Soul Cleaver, my opponent might be careful at increasing their Magic while it was possible to take them by surprise."
A better argument, but if their deck revolves around building up Magic, they will need to build it up whether you have Soul Cleaver or not.
Your argument is the same as 'If my opponent has Jealousy, and I have a Tower Building deck, I better not let my Tower get above 60.'.
"This kinda contradicts your first statement"
The purpose of my first statement was referring to someone stealing your strategy, the second statement was about people building a deck specifically to attack the one you're using.