Was Smullyan really wrong?

Short answer: you're both wrong! (Or, perhaps more optimistically, you're both right.) But on balance you're probably less wrong :-)

The thing is, to answer questions like this definitively, you have to be very precise about the rules of the “game” – and there are many sets of rules that could apply.

Just as in mathematics there are many different sets of numbers we could consider, there are also many different systems of logic - and in both cases, this can lead to different answers to the same question. For instance, we might consider the question “How many solutions for $x$ are there to the equation $x^2 = a$?”. For $a$ let's take 4, and consider what happens when we take our set of numbers as $\mathbb{N}$, $\mathbb{Z}$, $\mathbb{Q}$, $\mathbb{R}$ or $\mathbb{C}$: depending on our choice of set, we may get 1 or 2 solutions. Now take $a=2$ – now we get 0 solutions in some cases and 2 in others. Tahe $a=-1$: again, we may get 0 or 2 solutions, but in different cases to before. But which is the right answer for each value of $a$? Clearly it depends on the context of the question which of these sets of numbers (or indeed which other set) should be used in order to answer the question; one cannot say definitively a priori that 0, 1 or 2 is the “one true answer”.

The logical problem in the Knights problem is that we have a statement that is not only self-referential, but it refers to its own truth value. This is problematic because, in Smullyan's own words (referring to the example of “This sentence is true”):

Before I can know what it means for the sentence to be true, I must first understand the meaning of the sentence itself. But what is the meaning of the sentence itself; what does the sentence say? Merely that the sentence is true, and I don't yet know what it means for the sentence to be true. In short, I can't understand what it means for the sentence to be true (let alone whether it is true or not) until I first understand the meaning of the sentence, and I can't understand the meaning of the sentence until I first understand what it means for the sentence to be true.

Smullyan (in common, it should be said, with many others) resolves this by ruling out this type of self-referential statement (one that depends on its own truth value, in a circular/recursive manner) as not being well-grounded, and he deems that it has no truth value. This is an entirely reasonable position, that one might liken to someone working in $\mathbb{N}$ or $\mathbb{Q}$ who states that $x^2=2$ has no solutions.

But just as it's possible to pick another number system (say $\mathbb{R}$ or $\mathbb{C}$) that does admit solutions, it's possible to construct a system of logic that does cope with (some level of) self-referential statements. This isn't done in standard logic, since for most practical purposes self-referential statements are a curiosity of little practical interest, but in other areas of study – for instance, the theoretical underpinnings of computer science – self-reference and recursion is of crucial importance, so some theory has been developed.

Without wanting to go into too much detail, the typical way to deal with recursion is to look for a fixed point of some function $f$ – that is, a value $x$ for which $f(x) = x$. For the self-referential statements we would take $f$ to be “evaluate the statement, with $x$ substituted for the truth value of recursive references to the statement”. On the example “This statement is true”, that gives $f(x)=x$; on “This statement is false” it gives $g(x)=\lnot x$. (Note that for a “normal” statement, with no self-references, we have $h(x)=$<true statement> or $h(x)=$<false statement>, in which case the fixed points are $x=\top$ or $x=\bot$ respectively, as expected.)

Now we come to the problem that the set of fixed points of a function may contain more than one value ($f(\top)=\top$ and $f(\bot)=\bot$ both hold) or none (the set of fixed points of $g$ is empty), and what to do in these situations – especially the former – is again a matter of choosing what rules to play by. In general, given multiple fixed points, one must come up with a way of deciding which, if any, to accept: in computer science, the choice tends to be “take the least fixed point” (under a specific partial order); for your case one may choose to rule out such statements as meaningless, or assert that they are in some way “both true and false”; either may be appropriate according to the circumstances. And then one must clarify the rules as to what statements the characters may may: can a knight (who must always tell the truth) say, “This statement is true”, where the fixed points are $\{\top, \bot\}$, so true is included? Personally I'd say not, but that is a choice for the puzzle setter to make explicit!

Naturally (in order to keep this answer from becoming longer than it already is) I've glossed over a lot of details, but I hope you can start to see how one can begin to construct a theory within which one can systematically give meaning to statements such as “If I am not a knight, this is a lie”, though one has to work in a non-standard logic in order to do so.

As to the question of whether Smullyan made an error: I don't think it's fair to say this. As I've described, whether the answer “If I am not a knight, this is a lie” is acceptable depends on what rules you're playing by, and Smullyan has made it quite clear that he's working in a system in which that is expressly forbidden, so he did not err in saying that the problem posed was impossible.

Note: I believe you've read more into Smullyan's Question 70 than was perhaps intended. You seem to have interpreted this as giving licence to anyone to make ungrounded statements (i.e. utterances in the form of a statement, but having no truth value), regardless of their knighthood, knavehood, etc. In fact, the key here (and what allows the ungrounded statements into the problem in the first place) is not simply that the statements are ungrounded, but the fact that Portia Nth makes no claims about their truthfulness or falsehood. Look carefully at the preceding questions: in each case, either it is noted that “Portia explained...” something about which caskets have true statements, or the text itself gives this information. However, in question 70 this is not the case - Portia Nth simply supplies the caskets to the suitor without any explanation - the suitor's mistake is to believe he should pay any heed to the inscriptions at all, regardless of their groundedness!

Therefore I don't think it's right to suggest that anyone is entitled to make ungrounded statements - rather, I believe the restriction is “when a (knight, knave, etc) says something that is in the form of a statement, that statement must (a) be grounded, and (b) be consistent with whatever rules apply to their particular category”. This allows characters to swear, ask questions, and so forth - because expletives and questions do not have the form of statements - but still rules out them making statements with no truth value.