Why are activities to do with a case hidden from contact records?
That is how it was intended. Let me see if I can find the original spec for more info.

UPDATE: Haven't found it yet but did find https://issues.civicrm.org/jira/browse/CRM-3829 and also a reference that it is "in the spec" https://forum.civicrm.org/index.php%3Ftopic=6895.0.html

I know the reason is somewhere, but it has come up several times. Regardless of the original reason it seems to be one of the many things in Civi that 50% of people want it one way and 50% another.

I haven't tested this but I wonder what happens if you change showActivitiesInCore to 1 in CRM/Case/Info.php...

ANOTHER UPDATE: As I'm looking at the PR I'm reminded that the CiviCase project at the time was also being used as a sandbox for this new thing called jQuery (the rest of civi used dojo), and so part of the reason besides business reasons might have been technical, as in "let's keep this separate so we can play with it without touching the rest of core". There's also some actions like "File on Case" that require some attention when the activity can live on both sides. I also remember at one time, but it seems fixed now, that there were multiple link formats to get to editing an activity, and if you used a non-case one the activity would get "downgraded" to a regular activity and get disconnected from the case.