A fix that prevents the ArgumentOutOfRangeException from being thrown in my case:

In the anonymous method that is the third argument in the call to EncodedString.CreateStrings() in ID3Sharp.Frames.WXXXFrame.ParseFrameData(), protect the access to strings[0]:

strings = EncodedString.CreateStrings(URLLinkFrame.UrlEncodingType, leftoverBytes);
if (strings.Count > 0)
{
base.EncodedUrl = strings[0];
}