Counters are precious, because there are only 256 of them and several are already allocated or used by TeX: the first ten are reserved for page counters, as required by the DVI format; counters from 10 to 21 are used for bookkeeping related to register allocations and \count255 is kept as a scratch register. The Plain format reserves other six (two implicitly via \newinsert).
Note: here I'm taking the point of view of Plain TeX run with the original program without e-TeX extensions.
While the number of available counters seems still large, one has to keep in mind that a \newcount instruction does global assignments. Let's see:
\outer\def\newcount{\alloc@0\count\countdef\insc@unt}
\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne
\ch@ck#1#4#2% make sure there's still room
\allocationnumber=\count1#1%
\global#3#5=\allocationnumber
\wlog{\string#5=\string#2\the\allocationnumber}}
Thus \newcount\foo does
\global\advance\count10 by 1
\ch@ck0\ins@count\count
\allocationnumber=\count10
\global\countdef\foo=\allocationnumber
\wlog{\string\foo=\string\count\the\allocationnumber}
Some lines above we find
\count10=22 % allocates \count registers 23, 24, ...
so we know that \count10 stores the last allocated count register's number. The first available in user space would be number 23, but Plain TeX has three \newcount instructions. Thus \newcount\foo would print
\foo=\count26
in the log file.
Now you see that register's allocation is sequential. There's no way for “unallocating” a register without drastically changing the macros using a pool rather than a sequential strategy.
A macro definition such as
\def\amacro#1{\newcount\temp \temp=#1\relax ...}
would globally waste a register each time it's called: trust me, I've seen several instances of this error in LaTeX macros; as you know \newcounter and \newcount are not \outer in LaTeX. Sometimes it's \newlength, but the idea is the same.
By declaring \newcount and the other similar allocation macros as \outer, this kind of error is (almost) impossible to make.
Note that this would be an error also with the 32768 registers allowed by e-TeX or the 65536 made available by LuaTeX. The registers would only be exhausted later.
There are cases where \newcount would be legal in a macro: if we want to define an interface, say for introducing hierarchical sectional commands, we have to allow \newcount\subsectioncount as part of the (fictional) command
\definelevel{subsection}{...}
But here it's not “user space”: the definition of \definelevel is made by a programmer, who knows (or, at least, should know) what's being done. A programmer would type
\csname newcount\expandafter\endcsname\csname#1 count\endcsname
in the code for \definelevel, overriding the outerness of \newcount.