An important difference between the two packages is in the handling of footnotes on the last page. Neither shines at the job, but flushend
issues a decent result when balance
's is incomprehensible. I think It's better to use the former.
The same two pages using the two packages. First with flusheend
.

Second with balance
.

The code
\documentclass[11pt, a4paper, twocolumn]{article}
\usepackage[top=105pt, bottom=75pt, left=75pt, right=75pt]{geometry}
\usepackage{amsmath, amssymb, amsthm}
\usepackage{xcolor}
\usepackage{tikz}
\usepackage{flushend}
% \usepackage{balance}
\usepackage{lipsum}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newtheorem{thm}{Theorem}[section]
\newtheorem{lem}[thm]{Lemma}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\title{A twocolumn document}
\author{flushend}
% \author{balance}
\date{}
\begin{document}
\maketitle
\lipsum[1]
\section{Using either \texttt{balance} or \texttt{flushend}}
\lipsum[2]
\begin{thm}
\lipsum[3]
\end{thm}
\lipsum[4]
Consider the following drawing\footnote{\lipsum[21]}.
\begin{figure}[ht!]
\centering
\begin{tikzpicture}
\draw[thick, fill=blue!50] (0, 0) rectangle (3, 8);
\draw[thick, fill=orange!70, rotate=10] (0, 0) rectangle (3, 8);
\end{tikzpicture}
\caption{Rectangles and colors}
\label{fig:rc}
\end{figure}
\lipsum[5]
% \balance
As a consequence, we have\footnote{Well, well! It appears in an
unexpected place.}
\begin{lem}
\lipsum[6]
\end{lem}
\end{document}