They could not keep both on the roster.
Why? They were both signed, as of right now, and both fit under the current existing salary cap. So, why couldn’t they keep both?
Garrapolo is only signed for this year - he's been sitting behind Brady for three years, he wants to start.
They lose him for next year, (he won't sign) so they get a high 2nd round draft pick for him - rather than get nothing.