I'm not sure where you read that, but they are wrong, or you read it wrong.
Have a look at the link below, which contains these quotes:
First developed in assembly language, by 1973 it had been ***almost*** entirely recoded in C, greatly facilitating its further development and porting to other hardware.
In 1972, Unix was rewritten in the C programming language, contrary to the general notion at the time "that something as complex as an operating system, which must deal with time-critical events, had to be written exclusively in assembly language".[12] The migration from assembly language to the higher-level language C, resulted in much more portable software, requiring only a ***relatively small amount of machine-dependent code*** to be replaced when porting Unix to other computing platforms.
I added *** around the key bits: ***almost*** and ***relatively small amount...***
That means not 100%. Close, but not 100%.
The reason it isn't 100% is simple: There are certain things that an OS needs to do that simply can't be done using standard C.
For example, think of a desktop PC with an x86 processor. When you first turn on the power, the CPU starts executing in real mode. *nix needs the protected mode capabilities of the x86 (where x > 1) to run.
But there is no standard C library function like switch_to_protected_mode(). To do that, you need to twiddle some bits in the CPU registers. And C doesn't even have a twiddle_register_bits() function.
So...certain bits of code simply have to be written in assembly language. There is no way around it.
What *nix did well was to minimize the amount of assembly required. The vast majority of the OS ***IS*** written in portable C code. So moving the OS to a brand new hardware platform is ***relatively*** easy. But some assembly is required.