Based on Urist Da Vinci's excellent work above, and some testing of my own, I've worked out the basics of the algorithm that DF uses to calculate butchering results.
Dwarf Fortress starts by taking the size of the animal and from that determining the relative size of each body part. In the body definition raws each body part has a RELSIZE number which determines how large it is in relation to the other body parts. This is a relative number used to divide the total body size into per-bodypart sizes, not an absolute size. DF seems to sum the total RELSIZE of every body part in a creature together, divides that into each body part's RELSIZE, then multiplies the resulting fraction
For example, in a cow the total RELSIZE of every body part is 9471. The UPPERBODY part has a default RELSIZE of 1000. Dividing that by the total gives a size fraction of about 0.1055. In a size 600,000 cow, that body part has a size of 63351.
After determining the size of each body part, DF then checks each body part's size against a fixed threshold, which appears to be 185 (plus or minus five), from my testing. If the body part's size is below this threshold, it yields nothing. If the body part is above this size, DF adds one unit of product for every tissue type in that body part to the total. The upper body of a cow is defined as containing hair, muscle, fat, and skin, so one unit of each of those is added to the total. This is repeated for every body part in the animal.
Interestingly, DF does not seem to respect duplicated body parts of a single type during this. Cows are defined in the raws as having twenty-four ribs: seven true ribs on each side, three false ribs on each side, and two floating ribs on each side. Butchering ignores the NUMBER tag in the bodypart definition and only treats cows as if they had six ribs, one of each type on each side. This is also why you will only ever get at most one tooth from butchering a cow, no matter how large the cow is, despite the raws defining cows as having 30 teeth.
In very large animals, each body part may yield more than one unit of tissue. This appears to be nonlinear - it doesn't start happening until you get to quite large creatures. For a creature in the normal size range of a cow or most other domestic animals, each body part still gives at most one unit of meat/fat/bone/whatever.
Some tissue types - skin, hair, nervous tissue, cartilage - produce one object of variable size, rather than a stack of uniform-sized objects you get of meat and fat and bone. If an animal has a skull, that is always produced as a result of butchering rather than being processed into a stack of bones. Getting a skull happens no matter how small the animal is - so long as the animals is a slaughtered tame animal, anyway. A butcher won't touch a wild animal corpse if all it would yield is a skull.
There's also some effect of variation of individual animal size, fat level, and meat level, on how much fat and meat you get back. I am not at all certain how this effect works.
Small animals - rabbits, cavies, guinea fowl, ducks and buzzards - will never (or almost never) give anything on butchering because none of their individual body parts will ever be large enough to give one piece of meat. Mid-sized animals give meat based not directly on their size, but on how many body parts they have which individually are over a certain size. Only for very large animals is meat return directly proportional to size, and I'm not sure how linear that is yet.