Is there a good reason that Setter.Value isn't a ContentProperty?
Ten years and eighteen days after asking this question, the newly open-sourced WPF has a PR submitted that fixes this:
https://github.com/dotnet/wpf/pull/745
Good point indeed... But you could easily create your own Setter class inherited from System.Windows.Setter, put the ContentProperty attribute on it, and use it instead of the standard Setter.