You always have a choice. At last year's Paris-Roubaix he made a different choice, and many breakaways die a premature death because some riders don't want to do someone else's job.
If Cancellara had refused to tow Gerrans to the finish line, would Gerrans have acted the same way, or would he have cooperated? I don't care about Goss being behind, because at that point Gerrans was a much better option, as he was clearly the faster of the three (after 300 km, of course, Cancellara still had a chance), whereas Goss (who had real difficulties up the Poggio and only managed to be 15th, let us not forget) would have to deal with the likes of Sagan, Degenkolb and Freire, in a much less certain affair.
So Gerrans can't ride as fast as Cancellara on the flat. So what, he could still have given his all. We see that all the time: a climber and a rouleur in a break, the rouleur is more important to the success of the duo, but the climber still has to do his share, if only to allow the rouleur to catch his breath.
Had Cancellara refused to ride unless Gerrans went as hard as he, Gerrans would have been an idiot not to cooperate. If Fabian had done that, the three of them might have reached the finish line, and he might have won. That didn't happen, though, so it's Cancellara's fault that Gerrans didn't work, and Fabian did ride for 2nd instead of at least trying to bluff his way into 1st.