im not sure anymore but i always sort of expected math libs to provide soft fpu emulation.
True, but that works in a different way. It's not by emulating the FPU instructions - and if you had to emulate the FPU instructions, much more had to be done in the math libs than is done currently. The FPU instructions not only deliver the direct result in a register, they also set condition codes, probably "inexact bits", the quotient bit... Many tiny bits and pieces that make a full emulation more complex than a simple library.
The difference between an "illegal instruction" and an "unimplemented opcode" is that the former is often used as a "trap" representation for debugging (or other uses), and the later "often" provides additional information for the emulation of the instruction. Ok, Motorola removed all of that for the 060 and left it to the programmer to fiddle out the addressing mode, but it's really a different story whether an instruction "should be there but isn't", or is really not part of the ABI.
One way or another, Mot had a point in allocating a separate interrupt vector for that so you could distinguish whether your program actually went bezerk, or some library had to clean up behind the CPU.