API-wise it's exactly the same. The main difference is attributes handling:
1) Boolean attributes (checked, disabled, hidden, etc) are handled out of the box, so you don't need to add '.' to attribute name:
lit:
<input .checked />
modulor:
<input checked />
2) React-like 'props' property for custom elements. Example: https://modulor-js.github.io/modulor-html/?story=Components&storyKind=stateless&width=80&height=15&addon=Usage
3) Attribute name can be a function (use case, e.g. value reducers, complex event listeners). Examples:
html`
<input ${(target, value) => {
//target === <input element>
//value === 'test'
}}="test"/>
`
html`
<div ${on('click', '.some-class')}="${clickHandler}"></div>
`
It'd take some comment space counting all of them. There's examples page you can check https://modulor-js.github.io/modulor-html/
In general, modulor is designed with focus on custom elements