The language is a direct descendant of DECORATE and supports almost all old features from it, albeit with minor specification differences (DoomEdNums and DamageTypes were moved to MAPINFO).
In addition to that it supports direct level and actor data access, proper user-defined structures/classes, virtual methods and more.
Even though it was initially implemented in ZDoom, it was mostly developed by Graf Zahl and never got into the official release of ZDoom, as its development was discontinued.
As of GZDoom release 2.3.0, ZScript is used instead of DECORATE for built-in actors.
ZScript is still under heavy development; the announced goal of Graf Zahl is to move as much of the game logic to ZScript as possible, with all the relevant feature set available for the modders as well.
As of now, a lot of built-in actors (Hexen and Strife ones, for example) have their special code pointers rewritten from C to ZScript.