In my experience I've used (to some degree) both emulators and debuggers. I've used them both for loading binaries (containing production code) into flash memory. I've also used them while developing programs in C and C++. On one hand you have your expensive $10,000 emulator (like the Lauterbach) or you have your humble Atmel JTAG ICE3 debugger (roughly $90). In my limited experience in roles involving embedded systems, I guess I've never really gotten down to the nitty gritty where I've needed to notice the difference.
One of my co-workers thinks that an emulator would allow you to directly connect to a processor and control it via JTAG. So I guess they are saying that you'd also be able to see dissassembly and be "attached" while stepping through the running embedded software. Is this true? If that's true then it is the only difference I could see. What are some other difference between the two?