Wikipedia says that if you are just stating that you’re from Berlin as a matter of fact, “Ich bin Berliner” is right. If you want to speak figuratively, to say that you’re spiritually a Berliner, you can — even have to — put an “ein” before Berliner. People got what he was saying. Supposedly, too, the jelly donut is called a Berliner in other parts of the country, but not in the city itself.
Like I said before, I do not speak German, but I believe you are correct. Pertaning to the grammatical split between actual and “spiritual” citizens, I doubt that the German language is so strict as to guarantee that inserting one little article (”ein”) will have very much effect on the meaning. Kennedy’s statement was a metaphor, of course. He was not literally a citizen of Berlin, but he did have fraternal feelings for it.