Spaniard is a noun naming a person from Spain. Spanish is the adjective — Spanish food, Spanish history — and also the name of the language. So: "he is a Spaniard" or "he is Spanish", but never "he is a Spanish". English is inconsistent about this, which is why it trips people up.
The core difference
A noun and an adjective, in a corner of English with no consistent rule.
- Spaniard — noun: two Spaniards.
- Spanish — adjective: Spanish wine; also the language, and the people collectively: the Spanish.
Why the pattern is inconsistent
English has no single rule for nationality nouns. Some use -ish plus a separate noun (Spain, Spanish, Spaniard; Denmark, Danish, Dane; Poland, Polish, Pole). Others use the adjective as the noun (Italian, German, American). Others take -ese and resist a singular noun entirely — "a Chinese" is avoided in careful writing in favour of "a Chinese person".
A note on tone
Nationality nouns can sound blunter than the adjective. "He is Spanish" is neutral; "he is a Spaniard" is correct but reads as more marked, and in general writing the adjective is usually the safer choice.