The suffix "-y", applied to a noun, means "like" or "full of". So "grassy" means either "grass-like" or "covered with grass".
The word "fat" does double duty as an adjective "having excess flesh" or noun "substance under the skin of animals". "Fatty" is a modification of the noun, so something that is "fatty" has lots of the substance "fat".
"Fat" and "fatty" therefore strictly mean different things. There may be an overlap - a "fatty" cat may also be "fat" - but it isn't necessarily the case.
We can call an overlarge cat "fat" without having to worry about whether the large size is due to the actual substance 'fat" (which would be necessary for it to be "fatty").
In your other examples: a "cat skin" refers only to the skin, not to the cat. A "skinny cat" is a cat with lots of skin (although skinny has mutated into a word meaning "thin" or "without much flesh" rather than the strict meaning implied by the suffix). A hairy cat has lots of hair; a furry cat has lots of fur etc. There is no corresponding adjectival meaning of "hair", "fur" etc. so saying "hair cat" or "fur cat" is wrong.