IFieldChecker.ValidateTableName never returns an esriHasInvalidStartingCharacter value even when an InvalidStarting character is the problem. An esriHasInvalidCharacter is returned instead.
The wrong esriTableNameErrorType value
is returned by the source code.
Solution or Workaround
When an esriHasInvalidCharacter value is returned, check the corrected name. If an esriHasInvalidStartingCharacter should have been returned, the corrected name will be the original name minus the first character. The corrected name when an esriHasInvalidCharacter value is returned has the invalid character replaced with a "_" in its original location.