the problem isn't in the mechanism, it's in how far it's been implemented.
apparently libaspell isn't multiarch (or at least it's not being installed appropriately if it is), so when you install the 32 bit version it uninstalls the 64 bit version that was already there.
blocking multiarch doesn't solve this problem, the same problem existed before multiarch, it's just that everyone knew not to try to do that (you only used 'special' 'prepared' libraries that were part of the ia32 package)
multiarch reduces the problem, but by making it work more of the time, you do run into the cases where it doesn't work.
If you try to block it until it's perfect, you will block it forever, because whenever you actually use something new, you find the corner cases.
multiarch works perfectly if you stick to doing only the things that you could do without it.