The lmplot function returns a FacetGrid instance. This object has a method called set, to which you can pass key=value pairs and they will be set on each Axes object in the grid.
Secondly, you can set only one side of an Axes limit in matplotlib by passing None for the value you want to remain as the default.
Putting these together, we have:
g = sns.lmplot('X', 'Y', df, col="Z", sharex=False, sharey=False)
g.set(ylim=(0, None))

Update
- Positional arguments,
sharexandshareyare deprecate beginning inseaborn 0.11
g = sns.lmplot(x='X', y='Y', data=df, col="Z", facet_kws={'sharey': False, 'sharex': False})
g.set(ylim=(0, None))