That smudgy, wrong-colour halo around old Spectrum sprites has a name, and a very simple cause: the machine can't remember a separate colour for every pixel. A tiny program below proves it, live, on screen.
Every Spectrum program you've ever typed says OUT 254 or IN 254. The ULA doesn't actually check for 254 — it barely checks anything at all. A tiny program proves it, live, on screen.
Why a Z80, why a rubber keyboard, why your telly instead of a monitor — the ZX Spectrum wasn't designed around what would be best. It was designed around what Sinclair could get away with cutting, and one single custom chip that did the cutting for them.