It would be convenient if it could create those folders if they didn't exist.
Yes it would ... although that's already covered in the instructions on page 1 and somewhat outside the scope of this script -- this script is to learn from spam/ham folders that *already* exist.
Plus I've never looked to see if LP has the necessary libraries installed to create the folders via IMAP instructions for a given user account.
It can't learn from just the spam messages? What happens if you don't feed it any ham?
You'll end up with fewer "false positives" if you teach SpamAssassin what you consider HAM to be. If you go to work at a bank, they'll train you on what a *real* dollar bill looks like so you can better detect a counterfeit... SpamAssassin needs a balance so it learns more intelligently.
Also, try not to stockpile spam/ham as the learning algorithm in SpamAssassin can miscount the number of messages in the mailbox it's learning from. It's not uncommon for me to load up a mailbox with 200 messages and have my script report that it scanned 30 messages. I've found that keeping the myham/myspam mailboxes under 60 messages works best (and faster obviously) which means you'll also have more accurate scanning.
The only hitch with training ham/spam from individual Email mailboxes though, is that if one user trains a message as spam, and the next user who also got the same message trains it as ham, it will confuse SpamAssassin since each LP account only gets a single SpamAssassin database. If I recall from old documentation, if SA learns a message as spam, and then relearns the message as ham, it will then classify subsequent messages like it as whatever it learned *last* ... so if all 50 of your users get a message and the first 49 train it as spam and the last user trains it as ham, everyone else's "spam" designation was overridden.