You might not always want to have the methods of the underlying type available. For instance, you can use this to implement a read-only / immutable array, by forwarding only those methods that don’t modify it:
Another reason might be that you want to implement a method with the same name as an already existing one on the underlying type, but use a different signature for it. Since Haxe doesn’t have overloading, “auto-forwarding” like you propose would lead to a clash.