"Offender" refers specifically to a person, whereas "culprit" can refer to objects, animals, or even abstract concepts. For example, when a machine fails, the broken wire might be a culprit - but is not an offender.
Also, you can use the term "offender" to describe a person in general (eg. "notorious offender" meaning somebody who notoriously perpetrates crimes), whereas "culprit" is usually used in context of a particular case.
Also, "offender" is very rarely used outside of criminal context. If you break your mother's vase, you're a culprit, but hardly an offender. "Offender" also usually implies some sort of malice, while "culprit" is merely a person who commited something bad or contributed to it.