Hi Mark,
CPUs designs are rarely pure. Strictly speaking, the Z80 is part of a class of 8/16 bit CPUs, with limited support for 16-bit operations, namely:
load/store 16-bit (absolute locations and constants); push/pop 16-bit; exchange 16-bit; add, adc, sbc 16-bit. I think that basically sums it up. Because it doesn't support 16-bit logical operations, it's predominantly an 8-bit CPU.
The 6809 is fairly similar in that respect, it has 16-bit support for add, adc, sub and sbc as well as load/store and push/pop (because it can push a whole set of registers in one go). It also has extensive 16-bit index registers, which themselves can do 16-bit computation (e.g. LEAX Const16,Y means X=Y+Const16). Because 16-bit operations aren't fully supported it's still an 8-bit CPU, but it's more 16-bit than a Z80.
Similar arguments apply to the AVR. It can copy register pairs in one instruction and add/subtract small 16-bit constants. It also has an 8x8=>16-bit multiply. But 16-bits is only partially supported, so it's an 8-bit CPU.
The TMS9900 is a 16-bit CPU, with limited 32-bit support. 32-bit operations aren't fully supported (no add/sub/logical or test operations).
Even the venerable 6800 had some 16-bit support in the form of its 16-bit Index register and stack pointer. But it's very, very limited. It's an 8-bit CPU.
The 68000 is definitely a 32-bit CPU, because all the arithmetic, logic and test operations work on 32-bit operations... with the exception of multiply and divide which were partially 32-bit (16-bit inputs=>32-bit result or 32-bit/16-bit inputs => 16-bit results). This was improved upon in later versions of the processor.
The 8088, of course, is a 16-bit CPU despite the 8-bit data bus. 16-bit operations are fully supported (though again, multiply and divide were hybrid 16-bit/32-bit operations). In a similar vein, the 80386sx was a proper 32-bit CPU despite only having a 16-bit data bus. The 68008 in my cuddly Sinclair QL is a 32-bit CPU, despite only having an 8-bit data bus crippled further by 50% video contention (aaargghhh, what were they thinking ;-) ).
In one sense, then, the bitness of a CPU is defined by the convenience of programming it. 8-bit CPUs handle 16-bit data inconveniently; so if you're programming in assembler, you get a strong feeling for its bitness.
This also means that the bitness of a CPU is independent of its internal implementation of its architecture. So, for example, the Z80 is 8 (and slightly 16) bits despite only internally implementing a 4-bit ALU. The Data General Nova was 16-bit despite also having a single 4-bit ALU. The pdp-8/s was 12-bit despite only having a 1-bit ALU (and in turn the Manchester SSEM was 32-bit despite only having a 1-bit ALU and a mere 5-bit address space. That's because all its arithmetic operations, all three of them, operated on 32-bits).
FIGnition is an 8-bit computer, despite having a 16-bit Forth VM, because VMs don't count when it comes to defining the bitness of a computer (software <> microcode). However, FIGnition is a 16-bit system, because users don't have access to a FIGnition's internal 8-bit CPU.
The bitness fightback begins now!
-cheers from Julz