Here are a few higher level concepts before we get into the details.
There are several ways to execute additional operations after a Job or a Task has finished.
In the case of 3ds Max, you first have the 4 types of Pre and Post scripts you can run - Pre-Load, Post-Load, Pre-Frame, and Post-Frame. These are MAXScripts and are equivalent to what 3dsMax offers in its Render dialog, and in Backburner. They run within the scope of the 3dsMax session, so they have access to all the 3dsMax specific parameters.
Then you have 4 types of Python scripts which the Deadline Worker itself can run - Pre-Job, Post-Job, Pre-Task and Post-Task. These are executed by Deadline in the context of the Deadline Worker, so you could load the Deadline Scripting libraries documented in Deadline Scripting Reference: Welcome and access data of Jobs, Tasks, Workers, etc.
Finally, the most advanced way to perform operations on the output of a Job would be another Job submitted automatically based on the OnJobFinished Event that you mentioned. This requires the most work, as you need to create both a Deadline Plugin type to run PNGQuant jobs, and an Event Plugin to submit such jobs when a 3dsMax rendering job finishes. The result would be a new Job that will be configured to input the output files of the render job, and output the converted lossy PNGs.
Another way to handle it with an Event would be to react to the OnJobSubmitted Event. You would again submit a dedicated PNGQuant job using the output paths of the 3dsMax job as inputs, but you would make it Frame Dependent on the 3dsMax job. This way, the moment a frame finishes rendering in the 3dsMax job, the PNGQuant job would immediately convert that image to lossy PNG.
An example of the first type of conversion can be found in Deadline itself. The Quick Draft Event Plugin can submit DraftPlugin jobs which take the output of render jobs from 3dsMax, Maya, Houdini, etc., and convert them to movies, resize and save to other formats, add logos and text over the frames, and more. However, the Quick Draft event is relatively complex as it has to handle all these features, so it might take a while to extract the necessary logic to build a PNGQuant Event and Plugin.
Potentially, a simple Command Line or Python Plugin Job could be submitted by the Event without creating a dedicated PNGQuant Plugin to handle conversions - the OnJobFinished Event Plugin could submit a simple command line Job with the correct parameters and command line arguments to perform the conversion.
As you can see, there are several hooks within Deadline to perform the operation, and some of them are more complex than others. We will have to decide how much control and sophistication you want to provide, and how much scripting work you are willing to perform.
For example, if you go with a Post-Frame MAXScript or a Post-Task Python script in the Deadline Worker, you must assign the script in the Deadline Submitter each time you submit a job.
If you go with an Event Plugin, you don’t have to do anything at submission time. If you also create a dedicated PNGQuant plugin to perform the conversion, you could expose a Job Parameters dialog to dial in the Quality, Speed, etc. parameters that would otherwise be hard-coded in the scripts.
Please let me know which of the above approaches sounds closest to what you would like to implement. I will try to find time to test a few of these options and share my results, but I cannot commit to any specific deadline (no pun intended). 