Как правильнее хранить разные типы в одном поле структуры?
Мне кажется вы с ног на голову... Может быть так?
type Admin struct {
  Permissions map[string]interface{}
  User
}
type Subscriber struct {
  Online        bool
  Status        string
  SubscriptedTo []int
  User
}
type User struct {
  ID    int
  Login string
}
Для перечисления типа можно использовать типизированные константы.
const (
	NewUserType  userType = "NEW"
	AdminType  userType = "ADMIN"
)

type User struct {
  ID    int
  Login string
  Type userType
}

Хотя для конкретного кейса это не подходит. Тут лучше применить RBAC.