I'm curious why the Z80 is easier to program for over the 6802 clones (NES/PCE). In my experience, HC6811 (Genesis) is by far the easiest to program for, if you are doing assembly level stuff. Extra registers just make life so much easier.
I think you mean ...
"I'm curious why the Z80 is easier to program for over the 6502 clones (NES/PCE). In my experience, HC68000 (Genesis) is by far the easiest to program for, if you are doing assembly level stuff. Extra registers just make life so much easier."
The 6502 has A, X and Y registers.
The Z80 has A,B,C,D,E,H,L ... and then you've got the 16-bit registers BC,DE,HL,IX,IY and the alternate registers BC',DE',HL'.
So you do have a lot more registers to play with, and you actually have 16-bit registers that you can use as pointers.
In fact (pro-tip) the fastest way to draw sprites on the old bitmapped home-computers was to use the Z80's stack-pointer as the destination pointer to the screen and just "push" the sprite data.
That's the Z80 equivalent of Bonknuts' favorite ST1/ST2 on the PC Engine.
Yes ... the 68000 has even more registers, and even nicer instructions, but the Z80 usually provides "enough".
Assembly language programmers on the 6502 can play all sorts of tricks with zero-page memory and self-modifying code ... but the Z80 is usually cleaner and easier to read (and write) IMHO.
Thus far, all dev I've done has been in HuC, and its functional enough to do everything I need. Unfortunately, most HuC updates are happening behind the scenes, and most devs here talk shit on it. ... We'd benefit from a stronger, better advertised C compiler. That said, if it takes a smart coder to code a homebrew, it takes a genius coder to develop a compiler.
The 6502 and the Z80 just don't do C well ... they weren't designed for high-level-language programming, and they're slow and crap at it when you force them, particularly for stack-based languages like C.
HuC and CC65 are about as good as you're going to get, and both have their limitations.
Of the two, I prefer CC65 because it is "standard" C, and so it's easier to grab other people's libraries. It's also nice and flexible.
There are alternative high-level languages that fit
much better with the 6502, and you can read about some of them here ...
http://www.dwheeler.com/6502/