Two reasons, in my opinion
Firstly, the whole premise of unions is of taking collective action - i.e. all agreeing to strike to protect the rights of perhaps just one member at an extreme level. If everyone can pick and choose when they take action, the union becomes powerless. If you are happy to call upon your fellow union members to help you out if you ever need it, then you need to be prepared to strike with them even if it's not your preference.
Secondly, and this is particularly relevant to my line of work, when we strike they shut the operation down. Therefore, the impact/point is made. However, non-union staff can still go into work and have a very cushy day and take home a day's pay (fair enough, they aren't in the union, why should they lose out). When union staff also go in to collect a day's pay, they are literally letting their striking colleagues take a financial hit for their benefit.
These are all internal issues within a union, and I don't believe they can or should be governed by law - but this is how I believe union members should act.
Also, it's worth noting that you don't have to be in the union, and if you feel that passionately about not taking action with your union colleagues you can always quit, even between the strike being announced and it taking place.
Even though I'm a union member, I disagree. If someone doesn't agree with a strike then I don't believe they should be forced to withdraw their labour.