ffmpeg has an amazing article on burning the subs into the videos.
I trust ffmpeg to be very careful with (the lack of) quality loss.
Given you are dealing with ASS, here are the important bits,
You can burn text subtitles (hardsubs) with one of two filters: subtitles or ass.
ass filter
Same as the subtitles filter, except that it doesn’t require libavcodec and libavformat to work. This filter requires ffmpeg to be compiled with --enable-libass. On the other hand, it is limited to ASS (Advanced Substation Alpha) subtitles files. See the ass video filter documentation for more details.
ffmpeg -i video.avi -vf "ass=subtitle.ass" out.avi
If your subtitle is in SubRip, MicroDVD or any other supported text subtitles, you have to convert it to ASS before using this filter:
ffmpeg -i subtitle.srt subtitle.ass
Windows users will have to setup font paths to get libass to work