I don’t know how it works code-wise but wouldn’t it be possible to have ii.<device> be an “alias” for ii.<device>[1]? Might need a custom type/object to make that work, but seems to cover both usecases.
This kind of polymorphism does obviously make the interface a bit muddy.
The indexed version seems cleaner and clearer to me than the alternatives, although I guess ii.<device>1 and ii.<device>2 is pretty easy to understand. Maybe even in combination with ii.<device> that points to ii.<device>1?
I thought sc meant SuperCollider, so definitely seems confusing to me 
I’d just use the device name, so er301 in this case. This might have some impact on the naming scheme above, because ii.er3011 and ii.er3012 are also confusing. ii.er301[1] is a lot clearer.