I have a couple medium lego power functions motors than I want to control speed and direction with the arduino. I am ordering the SN754410NE to control them. The problem is that I am playing around with them, switching them with a PSMN2R0-30PL. I am just doing one pin at a time right now so only speed, no direction. When I use the mosfet to switch the low side of the motor it works fine. But when I switch the high side it goes much slower.

If I do anything like add a bit of resistance to the high side it stops working. But if I power it with a clean 5v, down from its usual 9, it runs fine. Just slower. Is this normal? How can I make sure this motor will work with that motor driver chip?

So the high side specifically need to be driven by a P-channel? I had assumed that was simply to use only one signal to pull one low and one high. Is that my problem?(I should clerify that I do not have a P-channel on me so I can't just try it)

High-side MOSFET driver chips exist that synthesize a bias voltage to allow them to switch n-channel MOSFETS on the high-side - an external capacitor (and sometimes diode) are needed for the charge-pump circuit. Since n-chan MOSFETs are about 3 times superior in performance to p-chan MOSFETs (all else being equal) these are very handy. The popularity of this technique is why p-chan MOSFETs aren't very common.