That is because you are using the same URL parameter for each validation check. The issue is that only one validation failed but all of the forms try to populate from the failed validation fields, but they aren't all saved since they are separate validations.
The best solution is probably to use a different url parameter for the failed redirect for each tab and then you can check for it when displaying the form like:
value="<?php echo(isset($_GET['v1'])?ValidatedField("healthscreeningform_984","FirstName"):$rsEDITFORM->getColumnVal("SMCformFIRST")) ?>"
and
value="<?php echo(isset($_GET['v2'])?ValidatedField("healthscreeningform_984","LastName"):$rsEDITFORM->getColumnVal("SMCformLAST")) ?>"