There are two ways to 'allocate memory' in Windows: to 'reserve' and to 'commit' memory.
The task manager only shows "Physical Memory Usage History"; the .NET VM apparently uses only reserved memory when you allocate an array, and then goes back and commits the parts that get used.
This way you can reserve memory without actually taking it up, which is more efficient, and reserving memory, according to MSDN, "reserves a range of the process's virtual address space without allocating any actual physical storage in memory or in the paging file on disk". That's why Task Manager doesn't show it.
You can read more about it on the VirtualAlloc page on MSDN.
This is an implementation detail though, so you shouldn't rely on it or anything. The Mono VM, for example, is likely to behave differently.
fillwhich is easy to spot.