It's almost 2022, and I'm having to write a COM Visible Non-Generic collection class for consumption by a large front end commercially used program written in VB6 - the prime example of such a consumer for non generic collection classes. So I don't see the need for these types of class disappearing any time soon, as there is still a lot of active VB6 code out there.
Meanwhile, use ArrayList and IList to underpin the custom collection class, and check that the individual items are of the type you expect before processing them, e.g.
[ComVisible(true)]
public class MyNonGenericCollection : ArrayList, IList
{
private ArrayList myList = new ArrayList();
...
public int Add(object myItem)
{
if (!(myItem is MyItemClass))
throw new ArgumentException(nameof(myItem));
// code to add to the ArrayList
}