For something to be self hosted requires a lot of infrastructure, specifically it requires mass storage and a way to access it.
Since something like CP/M never took root in the 6502 world, there's no common denominator for a basic system based on the 6502. If you were to build a bare bones Z80 system with mass storage today, even as a hobbyist, it would run CP/M (or a derivative) and open the door to a host of legacy software. If you were to build a 6502 machine today, you wouldn't have anything. You'd be an island in terms of a self hosting system. Hardware with no software.
So, is it going to be self-hosted on a C64? An Atari? An Apple? At some level it shouldn't matter, but there's a baseline (for lack of a better term) "BIOS" that the underlying code needs to assume.
Next, the problem with simple compiler is crummy code generation. We all know this. The problem with a 6502 hosted solution is that it's simply limited to simple compilers. While CPU speed is certainly a barrier to a "sufficiently smart compiler", it turns out that RAM is the more precious resource. A 6502 is starved for both.
Action! was unique. It was a cartridge based system, it compiled from RAM to RAM, it was a simple language that manage to skip over the problems of dealing with call frames and what not (it simply didn't have them). If things got locked up, a quick RESET would preserve the editor content and warm start the environment. Fast system with fast code and fast turnaround.
I honestly don't know how good the compiler was, I don't even know if it did mundane things such as constant folding etc. A single pass compiler is limited to what optimizations it can do.
On the Atari, there was a C65 system. I used it once. It was terrible. It was a classic implementation, very disk bound. It was glacial. There was a reason much development on 6502 machines were done with cross compilers on larger hosts.
Obviously a '816 based system, i.e. one that's actually got memory rather than just a faster 6502 with a better instruction set, has more resources available to make a better compiler. But, again, there's no common baseline common OS to host on a '816 SBC.
A Forth can clearly be self-hosted via a meta compiler.
UCSD was really novel this way, as it was self-hosting. They had the entire tool chain: compiler, assembler, linkers, editor. It's one reason I find still find the p-system compelling on small machines today. You could also create code for another machine, if you had a mechanism to move the files. I think an expanded P-Machine on a '816 SBC would be pretty neat. It wouldn't necessarily access all of the MB's ram a '816 can get (at least not "natively"), but you could offer up 64K of heap, 64K of code space, 64K of code cache, and the VM. You could easily use the excess RAM for a disk cache.
Then you could use it to make the environment less horrible -- ca. 1978 user interfaces...it's kind of nasty, frankly
.