This is a stab in the dark, but have you tried removing the index specifier [i]? You shouldn't need one when using the BeginCollectionItem helper, as far as I recall. It generates the unique index itself.
Here are a couple more resources on the helper that I found useful:
http://ivanz.com/2011/06/16/editing-variable-length-reorderable-collections-in-asp-net-mvc-part-1/
http://justmycode.blogspot.com/2012/07/learning-mvc-editing-variable-length.html
Update: Example in reference to asker's comment
@model Monet.Models.AgentRelationshipCodes
@using (Html.BeginCollectionItem("AgentRelationshipCodes")) @*error displays here*@
{
<tr>
<td>@Html.EditorFor(m => Model.EffectiveDate, "NullableDate", new { @class = "relCodeDate2" })</td>
<td>@Html.EditorFor(m => Model.RelationshipId, "NullableDate", new { @class = "relDistCode1", maxlength = 3 })</td>
@Html.HiddenFor(m => Model.ID)
@Html.HiddenFor(m => Model.RelCodeOrdinal)
</tr>
}