In general, there is no good answer as to what $0^0$ "should" be, so it is usually left undefined.

Basically, if you consider $x^y$ as a function of two variables, then there is no limit as $(x,y)\to(0,0)$ (with $x\geq 0$): if you approach along the line $y=0$, then you get $\lim\limits_{x\to 0^+} x^0 = \lim\limits_{x\to 0^+} 1 = 1$; so perhaps we should define $0^0=1$? Well, the problem is that if you approach along the line $x=0$, then you get $\lim\limits_{y\to 0^+}0^y = \lim\limits_{y\to 0^+} 0 = 0$. So should we define it $0^0=0$?

Well, if you approach along other curves, you'll get other answers. Since $x^y = e^{y\ln(x)}$, if you approach along the curve $y=\frac{1}{\ln(x)}$, then you'll get a limit of $e$; if you approach along the curve $y=\frac{\ln(7)}{\ln(x)}$, then you get a limit of $7$. And so on. There is just no good answer from the analytic point of view. So, for calculus and algebra, we just don't want to give it any value, we just declare it undefined.

**However**, from a set-theory point of view, there actually is one and only one sensible answer to what $0^0$ should be! In set theory, $A^B$ is the set of all functions from $B$ to $A$; and when $A$ and $B$ denote "size" (cardinalities), then the "$A^B$" is defined to be the size of the set of all functions from $A$ to $B$. In this context, $0$ is the empty set, so $0^0$ is the collection of all functions from the empty set to the empty set. And, as it turns out, there *is* one (and only one) function from the empty set to the empty set: the empty function. So the set $0^0$ has one and only one element, and therefore we *must* define $0^0$ as $1$. So if we are talking about *cardinal exponentiation*, then the only possible definition is $0^0=1$, and we define it that way, period.

**Added 2:** the same holds in Discrete Mathematics, when we are mostly interested in "counting" things. In Discrete Mathematics, $n^m$ represents the number of ways in which you can make $m$ selections out of $n$ possibilities, when repetitions are allowed and the order matters. (This is *really* the same thing as "maps from $\{1,2,\ldots,m\}$ to $\\{1,2,\ldots,n\\}$" when interpreted appropriately, so it is again the same thing as in set theory).

So what should $0^0$ be? It should be the number of ways in which you can make no selections when you have no things to choose from. Well, there is exactly **one** way of doing that: just sit and do nothing! So we make $0^0$ equal to $1$, because that is the correct number of ways in which we can do the thing that $0^0$ represents. (This, as opposed to $0^1$, say, where you are required to make $1$ choice with nothing to choose from; in that case, you *cannot* do it, so the answer is that $0^1=0$).

Your "train of thoughts" don't really work: If $x\neq 0$, then $0^x$ means "the number of ways to make $x$ choices from $0$ possibilities". This number is $0$. So for *any* number $k$, you have $k\cdot 0^x = 0 = 0^x$, hence you cannot say that the equation $0^0\cdot 0^x = 0^x$ suggests that $0^0$ "should" be $1$. The second argument also doesn't work because you cannot divide by $0$, which is what you get with $0^x$ when $x\neq 0$. So it really comes down to what you want $a^b$ to mean, and in discrete mathematics, when $a$ and $b$ are nonnegative integers, it's a count: it's the number of distinct ways in which you can do a certain thing (described above), and that leads necessarily to the definition that makes $0^0$ equal to $1$: because $1$
*is* the number of ways of making no selections from no choices.

**Coda.** In the end, it is a matter of definition and utility. In Calculus and algebra, there is no reasonable definition (the closest you can come up with is trying to justify it via the binomial theorem or via power series, which I personally think is a bit weak), and it is far more useful to leave it undefined or indeterminate, since otherwise it would lead to all sorts of exceptions when dealing with the limit laws. In set theory, in discrete mathematics, etc., the definition $0^0=1$ is both useful and natural, so we define it that way in that context. For other contexts (such as the one mentioned in mathforum, when you are dealing exclusively with analytic functions where the problems with limits do not arise) there may be both natural and useful definitions.

We basically define it (or fail to define it) in whichever way it is most useful and natural to do so for the context in question. For Discrete Mathematics, there is no question what that "useful and natural" way *should* be, so we define it that way.