Это совершенно нормально.
Внутренне, в .NET есть ваш массив MyArray, реализующий IEnumerable, который и ищет компилятор, когда вы используете цикл foreach такого рода.
Так что вам больше ничего не нужно делать.
Действительно, если MyArray уже объявлен как массив MyObject, вам не понадобится приведение к MyObject, поэтому
Dim MyArray(20) As MyObject
for each CurrentObject in MyArray
'access current object
next
всегда будет работать просто отлично, так как CurrentObject всегда будет иметь тип MyObject.
Приведение требуется только в том случае, если нечего сказать .NET, какой тип содержится в вашем массиве.