1. Yes different models use different texture resolutions, and different amount of custom sound effects, which determines how many memory they take up. Once all available RAM is taken up, the virtual memory manager starts purging blocks of memory and writes them to the HDD to free some RAM. Once the purges memory is needed again (for example, it could contain parts of the landscape model data), ofp has to load it from the HDD. The problem is that the HDD is one million times slower than the RAM, so thats why you get horrible lag once you're out of RAM.
2. Yes, for example, Nogova is significantly more resource-hungry than Malden. The reason is that it uses high-res textures, and has much higher geometry resolution (i.e. more vertices).
The secret in making a smooth mission: Use as many units as you like, but as few unit types as possible! For example, adding 40 Abrams tanks to a map will cause only a fraction of the lag that you will get when you add, say, 10 Abrams, 10 T-80, 10 T-72, and 10 BMP. The reason is that for the 40 Abrams tanks, ofp loads the model,texture and sound data only once, whereas the different tanks all have their own sound, model and texture data, which needs to be loaded.
Use the "setViewDistance" command to reduce the view distance; it also helps a bit to reduce lag.
If you have the necessary scripting knowledge, handle your units dynamically, i.e. use "createVehicle" and "DeleteVehicle" to add units only where they're needed, and delete them from the map once they're dead and the player is far away from them. In an average mission, the player will probably not see more than maybe 5% of all units at a time, so handling the units dynamically bears a great potential for optimization.