Well if anyone else finds themselves in this strange situation, the solution to my problem was this.
In the controller action method before returning the view with the SelectList drop down, there was this line of code :
ViewBag.language = Model.Language;
This seemed to be interfering with the way the SelectList was being constructed in the view :
@Html.DropDownList("language", Model.LanguageSelectListItems)
After removing this line from the controller the SelectList started defaulting to the correct value. This fixed both Html.DropDownList and Html.DropDownListFor. I also discovered this in another area of the site where the behaviour was the same, but this time a ViewData[""]
was being used.
So if you do run into this problem, check your local areas for any uses of ViewBag and ViewData that use the same name as the property you are trying to construct the drop down for.