For those who work on it, it probably is just for fun.
But Windows is, at its core, not a completely bad OS. I heard many parts of it are actually pretty well-engineered. The Windows NT kernel has pluggable subsystems, one of which is for Windows applications, but there used to be also a POSIX layer. In the kernel, almost everything is an object and can have ACLs (security descriptors). You actually do have something like Linux' /dev and /proc, it's just not exposed to the shell (you can sometimes see hard drive device paths, not legacy drive letters like C:, shine through the cracks, but mostly when there are boot problems).
Even in the shell, there are a few neat ideas. Everything is a (COM) object, and has interfaces. Applications can embed parts of the shell, e.g. explorer windows, and they can also contribute back parts, like custom places and icon types.
Of course there are layers and layers of cruft in Windows, but funnily, the older parts seem to be better engineered (especially taking to account their age, and looking over things like legacy 8.3 module names). Its a bit telling that the new Windows Runtime is actually a new version of native COM underneath, and not .NET CLR (but both are fully brigded).
I think the hardest part to emulate for ReactOS is not the old cruft, but the modern cruft. WPF for example does have a few nice ideas, but its insanely huge and complicated. And a typical windows system has like 4 different, incompatible .NET runtime libraries (.NET, Silverlight, WPF, WinRT). This is one thing I hope MS will get sorted out in the future.