SFTPやSCPを利用してファイルを転送しようが、独自プロトコルでサーバーBへデータを送信しようが、それらデータの到着を監視しなければならないと言う点では同じです。その監視方法を主観的にスマートと思うかどうかの差でしかないと思います。
サーバーAからサーバーBへファイルを転送するケース、例えば質問者さんがあげられたphpseclib
を利用する方法ですが、Bサーバー側ではそのファイルが転送終了された瞬間を検知しなければなりません。検知する方法としてはBサーバーで稼働するネイティブアプリが定周期でファイルの存在を能動的に確認するか、あるいはOSが用意する「ファイルの書き込みや変更が生じたときにイベントを発生させる」APIの類を使います。
ファイルの作成や変更が発生するときにイベントを発生させたいのであれば、Linuxなら
INOTIFY - Linux man(7)
が使えますし、Windowsであれば
SHChangeNotifyRegister function - Microsoft Docs
を使います。.NETのプログラムであれば、
FileSystemWatcher クラス .NET - Microsoft Docs
を使うのが簡単です。
ファイル転送を使う場合、結局はサーバー間でTCP/IPの通信が発生しているわけです。質問者さんがそれで良ければ別にそれで良いと思いますが、サーバーBでネイティブで作ったTCPのサーバーを立ち上げ、サーバーAでデータが発生するたびにサーバーBへ接続し、必要なデータをローカルなフォーマットで送り届けるのでもシンプルで充分かと思います。C言語のプログラムであるとPHP、他のWEB系プログラミング言語とは違ってJSONなどのデータ形式が標準の関数で用意されているわけではないので、ライブラリを別途導入する必要があったり、取り扱いが煩雑になる可能性がありますので、注意が必要です。
ただもしサーバーAとサーバーB間の通信を暗号化しなければならないとすると、話は戻ってしまいますが、SFTPやSCPを使ったファイル転送であったり、あるいはHTTPSが稼働するWEBサーバーを立ち上げ、HTTP(S)でデータを送り届ける方が確実かと思います。