I’m usually seeing such (assumed to be) “stuck” scans at 99% progress at the end of the scan because there are still long running VTs like e.g. SSH login brute force or HTTP ones running which might take a good amount of time to finish.
Background: AFAICT the progress bar / percent is based on the still to be scheduled / launched VTs because the software stack / component responsible for this calculation has no prior knowledge how much time a VT would take to finish (some might be finished in one second while special ones like the SSH login brute force one is allowed to run for 15 Minutes).