Так уж получилось что был у меня интерфейс в котором кнопки генерировались скриптом и.. последняя кнопка как то странно себя вела. Иногда нажималась, но чаще нет. При этом эффект over работал в 100%, т.е. выходит кнопка активна!
Долго пытался понять что не так с генерацией кнопок, пока не пришла в голову мысль — а вдруг она просто перекрыта не видимым интерфейсом? В итоге подсказали мне про интересную команду .
GetGuiObjectsAtPosition — Принимает позицию на экране и возвращает список всех экземпляров GuiObject , занимающих эту позицию на экране, отсортированных в порядке их появления на экране сверху вниз.

В итоге написал небольшой локальный скрипт и поместил его в StarterCharacterScripts
-- https://create.roblox.com/docs/reference/engine/classes/BasePlayerGui#GetGuiObjectsAtPosition
-- GetGuiObjectsAtPosition
local UIS = game:GetService("UserInputService")
local Player = game:GetService("Players")
local plr = Player.LocalPlayer
local PlayerGui = plr.PlayerGui
UIS.InputEnded:Connect(function(input, clickBtn)
	
warn("========================================")	
	if input.UserInputType == Enum.UserInputType.MouseButton1 then	
		local pos = input.Position
		local guisAtPosition = PlayerGui:GetGuiObjectsAtPosition(pos.X, pos.Y)
		warn(guisAtPosition)
		
		for k,v in pairs(guisAtPosition) do 			
			print(k,v:GetFullName())
		end
	end
	warn("========================================")	
	
	
end)
И вот такой маленький скрипт мне и показал, что я оказался прав в догадках. Над кнопкой был не видимый Frame.

Подправил его размеры чтобы не заползало на кнопки и.. вуаля! Всё заработало как положено.