I think you do have a point but, at least for me, I found it wasn't so cut and dry. Nothing I was working on related to the ethical issues I had. I did find other like-minded people in Microsoft and that felt like we were at least creating a pocket of people who cared, yet none of us had direct power to change anything. There were people who protested directly and got fired for it. I had to balance my IRL responsibilities outside of work with my ability to change things and my need for employment in the future. I made compromises across the board and like I mention up thread, I don't think I was brave at all. In fact I think I did the bare minimum I could, but at least I'm no longer complicit.
There are people far braver than me, but they were indeed fired. There are probably people covertly fighting the system from within but I didn't work close enough to any of these projects to know them.
So ideally people would do what you say and/or just be very open about their objections, but it's also worth recognizing the risk of industry blacklisting and how things like employer provided health insurance raise the stakes.