Synchronous reset within always block - BLOCKING vs NON-BLOCKING assignment
From a synthesis perspective, there will be no difference between the two pieces of code.
For simulation, in isolation, both pieces of code will have the same behaviour. However, if you start mixing blocking and non-blocking assignments for synchronous logic, this can sometimes cause weird/inaccurate simulation behaviour due to the way simulators convert the parallel logic into sequential operations.
The same applies to both synchronous and asynchronous reset cases.