My first answer would be that modelling != coding. Modelling operates at a higher level of abstraction, and your models should reflect your problem domain (what should be done) rather than your solution domain (how it should be done). The higher level of abstraction allows you to do interesting things, such as validation, automated transformation, code generation, simulation and so on.

My second answer would be that not all models need to be done with EMF or with graphical tools. Some models can be entirely textual (according to a Domain-Specific Language), and in fact many of the Unix minilanguages could be treated as domain-specific languages which serve as little models (of execution). In this regard, you could write a DSL with Java (not pretty), Groovy (better) or Scala (also better) just fine, or you may prefer having all the features Xtext (not part of Epsilon) would bring you. But if you need graphical models, Eugenia (part of Epsilon) is very nice for that!