Checked out the code, and dogs or any animals, don't take into account the order of items in single tile pile. They tend to prioritize the closest food item on the ground, but if there are multiple items in single tile they're all weighed equally in terms of "nearest" item. What is then picked from multi-item tile is based on internal data order, which isn't always what was thrown on the top the last time, or even what is graphically shown as topmost item. See, the game really doesn't track what would be the real order or availability of items in stack. (For example; drop a cut of meat, then a push heavy tree trunk on top of it. The dog can eat, and we can pick, the meat cut "from the bottom" with no special effort.)
To add checks to come up with desired eating order from multi-item stacks is doable, but requires change of an approach to animal food searching code as a whole, so a bit costly and messy thing to do. We might consider the actual necessity at some point, but the best option now is not to put bones in the same pile if you don't want them to be touched by the dogs, as the priority in the pile can't be figured out beforehand.