New answer:
https://stackblitz.com/edit/mat-radio-group-with-object-as-value
I created an object that extends FormControl and sets the value based on a given list of choice objects.
Old answer:
Ok so after some fiddling.... I realized the problem seems to be that material radio button is comparing the memory locations of the objects for the choices and the formcontrol value, instead of comparing the actual values of the array. If you know java they are doing if(OBJECT_A == OBJECT_B) instead of if(OBJECT_A.equals(OBJECT_B)). I figured this out by making a loop do the comparison and use the value from the choice list instead and it works.
However, it isnt the best solution and actually stopped working in some cases in my implementation. I have since found a better way of doing it. Here is the fully working example. I use the 'checked' attribute of the radio button with a compare function that performs a proper value compare. This worked, but still had one other issue... When I reset the form, if the value of the radio button was on the default choice, the reset method would clear the checked button. So I had to add an if condition in the reset method to make sure the value of the control was not already equal to the default choice, before resetting the value.
For anyone else running into this issue. The select control already has a compareWith attribute that allows you to get around all of this.