I’m in Canada and have no idea about US employment law; happy to leave that to quori.
Where I was working, it meant that I received most of the benefits permanent employees received, except for the pension. But my employment had a fixed end date set out in my employment contract. And then every year, at the last minute, the company would decide to renew the contract for an additional year. That’s probably why temporary full-time employees weren’t part of the pension plan - when the contract says you’ll only be there for a year, why even bother doing the paperwork for a pension plan?
I don’t know a great deal about Canadian employment law either, and if I screw up maybe someone here on BB will set me straight. But the lawyers I work with who do employment work tell me that it is very difficult to fire someone just for not being great at their job. There is no “employment at will” in Canada. If you’re a permanent employee, you can get fired for cause or they can let you go without cause. And the bar for “cause” is high. If the employee is egregiously bad or is committing crimes in the workplace or something, fine, but if the employee is just not particularly good at their job, that can be hard to prove. Wanting to avoid getting dragged in to a legal fight, on paper many employers will characterize any dismissal as being without cause. But then they have to give the employee either notice or severance. Basically, either way the employee gets paid - the difference is whether they have to keeping showing up to work. Unsurprisingly, many employers opt to not have an employee who has been dismissed hanging around the workplace. So the default ends up being that the employer has to pay severance, an expense no employer really wants to take on. How much notice/severance an employee gets isn’t set in stone; it’s determined based on a number of factors including years of service and age. Especially for long-time employees in senior positions, it can really start to stack up.
“Limited term” full-time employee contracts help employers avoid all that. They never have to let anyone go, for cause or not for cause. They just wait out the contract and then don’t renew it. For the employee, it means no job security. At any given point in time, it was not uncommon for multiple people in the office to not know if they had a job next month.
Of course, where I worked they almost always did renew the contracts, at the very last minute. Because my coworkers (and I like to think myself) were good at our jobs and the company needed us. But for budget reasons, it was easier for them to string us along.
Edited to add: my post kind of makes it sound like Canadian employment law is amazing for employees, and I guess from that perspective it maybe beats employment-at-will. But it’s also worth pointing out that it in the end, it really protects those who already have resources. If you’re a CTO, you’re going to get a sweet severance package because its a senior position and because the company knows you have the resources to push back. If you’re in entry-level customer service position with crap pay and English isn’t your first language, the protections the law provides are probably worth a lot less to you.