How to store custom data into a user
There are a whole bunch of ways to do what you want to do.

You can add custom fields to user accounts. If you wanted to go with option 2 then you could create a custom text field and write the JSON into that.

Another way would be to add a Matrix field to the user accounts and write a new row for each workout.

And another way would be to create a new channel for Workouts. When a user completes a workout, a new entry is created and related to them. You can then retrieve entries relating to that user to display their workout history.

And yet another way, would be to create a custom model for a Workout and relate it to the user account. Your plugin would then create records using that model and you could retrieve them to display the user's progress.