その言葉の意味については、みなさんの書かれたとおりです。日本語を話せる外国人はまだまだとても少ないですから、とりあえずの挨拶として褒めているのです。「ありがとう、でもまだまだです。」と返事してあげれば完璧でしょう。
でも、arekkusuさんの気持ち、ちょっと分かりますよ。私はアメリカの北カリフォルニアに住んでいますが、ここの住民はアジア系が3割を越えています。その中には、留学生もいれば、会社で働いている人もいるし、アメリカ生まれの2世3世、あるいは子供の時に両親と移民してきた1.5世もいます。ですから、外見だけではその人が英語ネイティブなのかそうではないのかという区別はつきません。また、ネイティブでなくても日常的に英語を使って仕事をしている人は星の数ほどいます。
こんな状況で、初対面の人に"Your English is good!" なんて言われた日には「あーやっぱり私の英語はまだまだなんだな」と思ってしまいます。私が英語勉強中なのは本当ですからまあいいんですけど、もしプロフェッショナルとして英語でビジネスをしている人に対してそんな評価をしたら、それははっきり言って失礼です。「英語が上手ですね」=「あなたの英語はネイティブレベルじゃないですね」ってことですから。英語であれ日本語であれ、できるのが当たり前な相手にはそういう態度で接するのが、相手を尊重するということじゃないかなぁと思います。
それに、言葉って、最初のうちは色んなことが言えるようになって嬉しいですけど、上達すればするほど、「本当はこう言いたいのにうまく言えない」「ネイティブの会話についていけない」など難しさが表面化してきて、悩んだりしませんか?そんなときに”Your English is good!” とあっさり言われてしまうと、悩みを否定されたみたいな感じがするんですよね。
だからといって"Your English is terrible." なんて言われたらもっと悲しいですけど。
長くなってしまいましたが、私は自分にそういう気持ちがあるので、外国人に対しても「日本語が上手ですね」はなるべく使わないようにしています。学生に対しては、「発音がいい」とか「作文が上手」とか「発想がユニーク」とか、いい点を具体的に褒めます。学生じゃない、おしゃべりの相手だったら、おしゃべりついでに「どこで勉強したんですか?」とか言います。でも、本当に感心したら「上手ですね~」とつい言ってしまうときもあります。理想的には、たとえ相手の日本語が完璧じゃなくても、それを感じさせずに自然におしゃべりできればいいんですが、なかなかうまくいかないことが多いです。