Yes we should. It costs a rail system far more to add capacity during the peak hour than during other times, since that's the service pattern around which the tracks need to be designed. If you run 8tph peak and 2 tph off-peak your line needs to be able to support 8tph. If you can spread out demand to run 4 tph all day, you only need the infrastructure to support 4 tph, saving a lot of construction and maintenance costs.
In all of the office jobs I've ever had, people commuting by car have had wildly differing hours to avoid traffic, arriving insanely early or very late in the morning, while transit riders all showed up between 8 and 9. Because although rail transit gets more crowded, it doesn't get much slower so demand doesn't disperse the same way it does around road traffic congestion. Providing discounts outside of rush hour helps create an incentive to disperse demand around the peak periods.
Variable pricing goes a long way to making the system a lot more affordable to operate, and those savings could easily be passed on to the riders in the form of great off-peak discounts.
An alternative to official "peak" and "off-peak" prices are time-restricted discounts. For example, here in the Netherlands there is only one base ticket price, but for €5/mo you can get a NS subscription which gives you 40% off off-peak.
Or on the TTC, parking is paid on weekdays until the early afternoon, then free on evenings and weekends. So in effect if you're going to drive to the station, it's cheaper to travel outside of peak periods. This latter example would be highly effective on GO given what a large percentage of ridership drives to the station. It would also have the valuable side effect of limiting parking demand during periods when the car park is typically full.