Debian networking is somewhat complicated. The networking init script and networking upstart jobs don't do what most expect. Those scripts and their underlying utilities only configure what they know about from the interfaces file. If you remove something, or assign an IP to another interface, it won't deconfigure the previous configuration, it will only apply the newly provided configurations.
Example:
1. 10.10.10.10 on eth0
2. Edit /etc/network/interfaces and remove 10.10.10.10 from eth0 and assign to eth1
3. Restart networking
The result is that you now have 10.10.10.10 on eth0 and eth1, because they don't fully deconfigure the interface before applying the configuration of the interfaces file.
And it is not exactly straight forward to get it to completely deconfigure all interfaces and then reconfigure on start up.
Your other options are to use the `ip` command to do all of your work after modifying /etc/network/interfaces, but that could be complicated, without knowing exactly what changed in the interfaces file.