All respet to Shaun for persistence, I would stop much sooner
I'm just rewatching the movie again and Zach is an absolutely terrible conversationalist. I do get it, he's very introverted and sensitive, which is fine, but he doesn't give almost any hints to Shaun that he's on the right path with hitting on him. We, the viewer, get to see how he's smiling when he's talking on the phone with him or when he's drawing after their night together, but if I'm trying to put myself into Shaun shoes and work only with the feedback he's getting directly from Zach, there's really not much to go on from. The first time they kiss, he runs away, the first time they sleep together, he runs away, his sentences (when Shaun is asking him anything) are all very dismissive ... Again, we get that Zach actually is into Shaun, but you would have to have a high level of empathy to get into Zach's head and actually realize that.
I think that's why he and Gabe were best friends. Gabe is just talk talk talk and doesn't even notice that his friend doesn't open his mouth at all, and Zach liked not actually telling anything about himself.