In Shelter (2007) , Zach kept his relationship with Shaun secret from everyone. Tori realized it because she has seen their closeness but Gabe was not there when Zach and Shaun developed that closeness or started an intimate relationship. So how did Gabe get to know that? As he never noticed something different and he even gave a funny grim smile after telling that he knows. Did I miss anything?
After watching the film again, I got the missing piece.
Before Zach and Shaun had sex for the first time, Shaun was wearing a t-shirt which got mistakenly exchanged after some time. Gabe did notice Zach wearing Shaun's t-shirt and even complimented him with something like "Nice shirt". And he did notice Shaun's awkward behavior just one scene before. Seems like Gabe just added the facts and concluded the truth and just said it straight to Zach later.