I think it is largely historic, but there is one clear distinction. A code page is a look-up table, one particular byte maps to a specific character. Different code pages use different mappings. In the olden days, those mappings weren't actually performed. Which required you to also have fonts that had glyphs to match the code page. Still a problem today btw, console windows have a code page.
There is no mapping in a Unicode encoding. They merely needs to squeeze 32-bits into an efficient format. Different Unicode encodings use different ways to squeeze the bits. The character always has a fixed value (codepoint in Unicode speak).
UTF encoded text files should have a BOM, allowing the reader to autodetect the encoding. No such convention exists for text files that were encoded with a code page. Getting good text out of them is a bit of a crap shoot. It's an evil that should die already :)