The issue is how the routing works.
If you have more than one interface, each could be configured with a gateway. I can't sure how routing table really was filled up on your particular system, but I suspect your system gave the best priority to the first default route appeared, then second best to the second appeared and so on. Only the best default route is active. If you put the corresponding interface down, its default route also disappears, so if there some other default route left it will take over. That priority is called "metric".
When you ping, your system creates a packet with some source address. It could pick some address by itself (from the "src" attribute of a local-network route), but you can specify an address to use or an interface from which local-network route to pick up that address, with -I switch. This is what this swich do; in only sets source address. It doesn't select routes and doesn't affect by itself which interface to use.
What is going on: you send a packet with a source address of a "second" interface from the "first" interface to the "first" gateway. Most probably it is dropped on gateway, which doesn't know how to reach that source address (when the time comes to reply, to whom it should reply?), or doesn't expect it appearing that way.
What to do? You should set up routing based on source address. This is advanced topic. In Linux you set up several routing tables, each will have a different default route, and instruct system to select which routing table to use based on packet source address. This is called multi-homing.
In Linux basic multi-homing setup in your case will be:
ip route add default via 192.168.0.GW0 table 1
ip route add default via 192.168.1.GW1 table 2
ip rule add from 192.168.0.x lookup 1
ip rule add from 192.168.1.2 lookup 2
the first two are default routes with resp. gateways,
third and fourth are which table to use for which address. Of course, you'd better put concrete real values into placeholders. DHCP? Ether forget about multi-homing, or write a script which sets up everything dynamically on reception of address, and removes that when address is lost (in general the route will be automatically deleted, the rule should always be deleted manually). Autoconfigure on boot up? Your distribution manual could direct you into right way, be prepared to break networking and know how to restore it into clean state.