When using Plex with Apple TV 4 with NAS I found out that this is the NAS which decodes the movie and ATV4 just streams it. NAS CPU loads up to 98% and then the movie playback halts (I use Qnap TS-569 Pro).
This is half correct. The Plex Media Server (which runs on the NAS) asks the Apple TV if the format is supported natively, if it is the server just streams it as is to the ATV (direct play) or repackaged (direct stream). If it is not supported, the server has to decode it from the file format, encode it in a format the ATV likes, then streams to the ATV that decodes the known format. This decode + encode is what "transcoding" is all about, and is a heavy task, and is a task the server has to do.
But at the same time if I use Plex via web in a browser with the same NAS- it seems like decoding is done on the laptop, NAS CPU load is only about 30-40% and playback continue smoothly.
In this case probably the web client is able to direct play the content, so no transcoding happens, the file is direct streamed to the laptop that decodes it.
Question: is there a way to fix the Plex for iOS in such a way that the decoding is done at ATV4?
There's nothing to "fix" because this is the way Plex works, but as someone told you you can chose another player on the Apple TV that supports more file formats and has a good interface with Plex.
I understand that technically there should not be any issues as the VLC for ATV4 is decoding on the Apple TV 4 itself.
VLC is using its own player, while the Plex app uses the Apple TV native player, therefore it supports different formats. For example you can use VLC to reproduce plex movies via DLNA and you won't need transcoding because VLC supports many more formats than the native ATV player.