Below is with the assumption of an org with at least access to a developer sandbox.
Use a developer Sandbox
+Plenty available for use, can be left in semi perment state without impacting project/development
+No additional cost
+Can be refreshed daily
-Only includes setup no record data, requiring data to migrated. This process could be automated with an ETL tool (e.g. Talend) but comes with a maintenance cost when refreshing.
-Limited storage space, but could be enough for training purposes.
Use a full copy Sandbox
+Copy of all data at the point of refresh
+No additional cost for orgs with one
-Can only be refreshed once every 30 days
-Will be refreshed according to project need not training need
-Changes will be applied here, that may not go live, so will not necessarily be consistent with live.
Purchase and use another full copy Sandbox
+Copy of all data at the point of refresh
+Will not interfere with project/development as standalone environment
-Ongoing additional cost
-Can only be refreshed once every 30 days
Purchase and use a partial copy Sandbox
+Partial copy of data according to sandbox template
+Will not interfere with project/development as standalone environment
+Should/could contain enough data for training purposes depending on requirements
-ongoing additional cost, but less than a full copy