This is actually two questions in one
- should you use OOP methodology?
- should you use classes?
There is nothing wrong with using OOP, but most of the interaction which themes and plugins have with the wordpress core is very functional - on event "a" perform function "b". There is usually very little value in try to do Object Oriented Design (which you should always do before writing OOP code) to discover meaningful persistent classes of objects in your theme, as they are probably very trivial.
Should you still use classes in your code? depends on what kind of things you do. Some parts of wordpress core are designed to be extended by inheriting classes (widgets and walkers). It will be almost insane to try to avoid going OOP if you need to change/extend that functionality in your theme.
Some plugin writers use classes for data encapsulation/namespacing to avoid global variable and function names collisions, but this can be achieved also by prefixing "normal" function names.
There is no real performance problems with OOP relative to functional code. My main problem with OOP code is that for every non trivial class it is harder to follow the code when you try to read it.
To summarize, when you have the options to use both, the differences are more of a matter of personal preference for coding style then any major substantial difference. If you don't know OOP you should learn and decide by yourself which style suits you and the projects you do better.