The reason why AC cancels the daytime flight to LHR when they are short of aircraft is the plane sits on the ground at LHR from 9pm to 6pm the next day. They can fly the same plane somewhere else from YYZ during the day, then to LHR from YYZ in the evening and still have plenty of time to turn it around for the 6pm flight back to YYZ the next day. From a fleet utilization perspective, they would never operate the daytime flight, but the flight is popular and it is very difficult to get another slot for a morning arrival at LHR (they are likely using one of their unused YHZ or YYT slots for their 4th arrival this winter, which they only have available because of the MAX grounding). Their fleet is stretched to the limit right now and it doesn't look like the MAXes will be back in the sky anytime soon. Somewhere in the MAX thread, someone posted that AC is catching up on maintenance this winter and early spring in anticipation of a very busy summer schedule.
The cancellation is really annoying since that daytime flight is the main reason why I stick with the Star Alliance.